加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用模板是否可以节省内存

发布时间:2020-12-16 07:12:12 所属栏目:百科 来源:网络整理
导读:在我的理解中,模板允许我们编写一个适用于不同数据类型的函数或类. 堆栈或链接列表等容器用于存储数据,但一次可以存储一种类型的数据.要存储不同类型的数据,我们需要编写同一容器类的不同版本.我们可以通过编写类模板来保存这些重复的代码. 我知道它可以节省
在我的理解中,模板允许我们编写一个适用于不同数据类型的函数或类.

堆栈或链接列表等容器用于存储数据,但一次可以存储一种类型的数据.要存储不同类型的数据,我们需要编写同一容器类的不同版本.我们可以通过编写类模板来保存这些重复的代码.

我知道它可以节省程序员的写作工作量.但我想知道使用模板是否可以节省内存.

解决方法

这取决于您编写的模板.首先,如果模板在每种数据类型上创建实例都会浪费内存.简单地说,由模板实例化生成的代码将占用每个实例的程序空间.拥有这样的模板与手动编写每个实例相同.

另一方面,如果给定数据类型的每个实例的代码将始终相同,则可以对模板进行大量优化.想想像vector这样的容器模板,它存储指向任何类型的指针.为什么我们需要额外的代码来存储指向int的指针而不是指向float的指针?看一下vector的stl实现,并寻找指针类型的特化.指针的矢量模板的所有实例都来自一个!基类,它实现了指针所需的所有功能.它通常使用void指针.

给定数据类型的实例将创建的唯一代码是具体指针类型的强制转换.但是强制转换器不会生成任何处理器可执行代码,因此无需任何程序空间成本即可完成.

并且有大量的模板可以在编译期间执行操作.这称为元模板编程.此模板通常根本不生成代码,并且不需要任何程序空间成本.

简而言之:您必须记住这3种类型的模板代码才能得到答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读