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

C++:STL模板

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

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

交换后的结果:

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

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

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

类模板:

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

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

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

http://www.xdnf.cn/news/77005.html

相关文章:

  • Spark-Streaming
  • Kafka 消息积压监控和报警配置的详细步骤
  • AbMole推荐:CRM197--增强免疫原性,突破疫苗研发困境
  • 网络安全·第五天·TCP协议安全分析
  • SuperMap GIS基础产品FAQ集锦(20250421)
  • 前台调用接口的方式及速率对比
  • 【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
  • 前端之勇闯DOM关
  • 迅为iTOP-RK3576开发板/核心板6TOPS超强算力NPU适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品
  • NineData 与飞书深度集成,企业级数据管理审批流程全面自动化
  • 应用的“体检”与“换装”:精通Spring Boot配置管理与Actuator监控
  • Qt信号槽连接的三种方法对比
  • 通信与推理的协同冲突与架构解耦路径
  • Linux学习笔记2
  • 常见的HTTP请求报错案例
  • 数据结构*链表- LinkedList
  • 用Go语言正则,如何爬取数据
  • 前端如何优雅地对接后端
  • django之数据的翻页和搜索功能
  • yaml里的挪威问题是啥
  • 从零开始搭建Django博客②--Django的服务器内容搭建
  • 分布式之CAP原则:理解分布式系统的核心设计哲学
  • 【前端】【业务逻辑】 数据大屏自适应方案汇总
  • vs2017中,将CMake构建目录设置在项目目录下
  • Pikachu靶场-RCE漏洞
  • 聊一聊接口服务如何防止被恶意请求
  • HarmonyOS:网络HTTP数据请求
  • 轻量级景好鼠标录制器
  • 爆改 toxml 组件 支持数据双向绑定 解决数据刷新问题
  • 百度搜索 API 相比于爬虫的效率提升、价格及如何注册使用