17.泛型编程如何实现-灵析社区

菜鸟码转

泛型编程实现的基础:模板。模板是创建类或者函数的蓝图或者说公式,当时用一个 vector 这样的泛型,或者 find 这样的泛型函数时,编译时会转化为特定的类或者函数。

泛型编程涉及到的知识点较广,例如:容器、迭代器、算法等都是泛型编程的实现实例。面试者可选择自己掌握比较扎实的一方面进行展开。

  • 容器:涉及到 STL 中的容器,例如:vector、list、map 等,可选其中熟悉底层原理的容器进行展开讲解。
  • 迭代器:在无需知道容器底层原理的情况下,遍历容器中的元素。
  • 模板:可参考本章节中的模板相关问题。

泛型编程优缺点:

  • 通用性强:泛型算法是建立在语法一致性上,运用到的类型集是无限的/非绑定的。
  • 效率高:编译期能确定静态类型信息,其效率与针对某特定数据类型而设计的算法相同。
  • 类型检查严:静态类型信息被完整的保存在了编译期,在编译时可以发现更多潜在的错误。
  • 二进制复用性差:泛型算法是建立在语法一致性上,语法是代码层面的,语法上的约定无法体现在机器指令中。泛型算法实现的库,其源代码基本上是必须公开的,引用泛型中库都需要重新编译生成新的机器指令。而传统的 C 库全是以二进制目标文件形式发布的,需要使用这些库时直接动态链接加载使用即可,不需要进行再次编译。

阅读量:2027

点赞量:0

收藏量:0