当前位置: 首页 > 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 处理读请求
  • 安全文件共享实际上是什么样的呢?
  • 解决找不到字体的问题
  • “中华优秀科普图书榜”2024年度榜单揭晓
  • 人民网评“我愿意跟他挨着”热搜第一:充满温暖力量的七个字
  • 外交部:中方近日派出停火监督组赴缅,监督缅军和果敢同盟军停火
  • 神舟二十号任务完成最后一次全区合练,发射场做好发射前各项准备
  • 贵州赤水“整改复耕”:为何竹林砍了,地却荒了?
  • 特写|为何这么多人喜欢上海半马,答案藏在他们的笑容里