当前位置: 首页 > news >正文

C++:STL模板

STL模板分为函数模板和类模板。

我想交换两个数字,但是类型不同,例如我想交换整形a,b,和double类型的d1,d2。如果使用C语言来实现,那么需要像下面一样写两个swap函数,但是除了类型不同,其它都一样,比较麻烦。为了解决这个问题,提出了函数模板。

交换后的结果:

函数模板:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码。

以上可以从汇编代码看出:这确实是生成了两种类型的swap函数,分别进行调用,只不过不需要我们自己写,而是编译器自己处理。

类模板:

用C语言和C++分别实现栈,进行对比:

下面是利用C++写stack,相比于C,C++更简单,不需要写初始化和销毁函数,利用构造函数和析构函数来解决。

模板有显式实例化和隐式实例化:

相关文章:

  • 华为网路设备学习-19 路由策略
  • RS232转Profinet网关开启光谱仪新视界
  • 【Spring Boot】MyBatis多表查询的操作:注解和XML实现SQL语句
  • 1.HTTP协议与RESTful设计
  • 智能指针之设计模式3
  • 如何使用 Spring Boot 实现统一功能处理:从零开始打造高效、可扩展的后台系统
  • 31Calico网络插件的简单使用
  • 常用python爬虫框架介绍
  • 测试第四课---------性能测试工具
  • gbase8s触发器使用
  • 使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
  • Python 获取淘宝买家订单列表(buyer_order_list)接口的详细指南
  • 【C++】新手入门指南(下)
  • 建造者模式详解及其在自动驾驶场景的应用举例(以C++代码实现)
  • C++(初阶)(十二)——stack和queue
  • container_memory_working_set_bytes` 与 `container_memory_usage_bytes` 的区别
  • C++ 学习指南
  • Redis 处理读请求
  • 安全文件共享实际上是什么样的呢?
  • 解决找不到字体的问题
  • 视频丨054B型护卫舰钦州舰南海实战化训练
  • 研究完蚂蚁搬家,我好像明白了为什么我们总是堵车
  • 体重管理门诊来了,瘦不下来的我们有救了?|健康有方FM
  • 为治理商家“卷款跑路”“退卡难”,预付式消费司法解释5月起实施
  • “女乘客遭顺风车深夜丢高速服务区”续:滴滴永久封禁两名涉事司机账号
  • 国台办:台商台企有信心与国家一起打赢这场关税战