在我看来,模板允许我们编写一个适用于不同数据类型的函数或类。
堆栈或链表等容器用于存储数据,但一次只能存储一种类型的数据。为了存储不同类型的数据,我们需要编写同一容器类的不同版本。我们可以通过编写类模板来保存这种重复的代码。
我知道它可以节省程序员的编写工作。但我想知道使用模板是否节省内存。
最佳答案
这取决于您编写的模板。首先,如果一个模板在每个数据类型上创建一个实例会浪费内存。简单地说,模板实例化生成的代码会为每个实例占用程序空间。有了这样一个模板,就相当于手写每个实例。
另一方面,如果给定数据类型的每个实例的代码始终相同,则模板可以进行很多优化。考虑一个像 vector 这样的容器模板,它存储指向任何类型的指针。为什么我们需要额外的代码来存储指向 int 的指针而不是指向 float 的指针?查看 vector 的 STL 实现并寻找指针类型的特化。指针的 vector 模板的所有实例都来自一个!实现指针所需的所有功能的基类。它通常为此使用空指针。
给定数据类型的实例将创建的唯一代码是具体指针类型的转换。但是转换不会生成任何处理器可执行代码,因此无需任何程序空间成本即可完成。
还有大量的模板会在编译时进行操作。这称为元模板编程。此模板通常根本不生成任何代码,并且无需任何程序空间成本。
简而言之:您必须记住这 3 种类型的模板代码才能得到答案。
关于c++ - 使用模板是否节省内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241950/