模板、泛型编程与 STL
在《C++ 沉思录》中,关于模板与泛型编程的讨论相当经典。这其实就是Andrew 大神揭示了他对于模板及其应用的的思考脉络,在他的引领下,我们从容器类的设计讨论开始,逐渐领悟泛型编程的精妙之处。
模板的本质是受限的语法宏,但它比普通宏要更加安全,且编译后的运行速度几乎与宏一样快,这对于强调性能的 C++ 程序员来说,是非常重要的。
模板这一特性最重要的运用就是泛型编程。所谓泛型编程,就是使得参数类型抽象化,程序员只需要编写与程序相关的细节就好。
泛型编程最适用于通用库的开发,它所结出最丰硕的果实,就是STL (Standard Template Library,标准模板库)。STL在1993年时被 Andrew 大神慧眼相中,并积极向 ANSI/ISO C++ 标准委员会推介,并于1994年启动纳入 C++ 标准工作。
STL 提供的各种容器类与诸如检索、排序的高效算法,让程序员得以将精力放在业务逻辑的实现上,可以说是极大地解放了生产力。
同样在书中,Andrew 大神对 STL 的主要组件的实现原理,分别以浅显的示例作了讨论,包括container(容器),algorithm(算法),iterator(迭代器),adapter(适配器),function object(函数对象)。
这使得我们对 STL 的实现有了直观的认识,相信我们再去钻研 STL 时,就能得其门而入。另一方面,无论是应用 STL,还是通过泛型编程扩充自己的功能库,都可以做到得心应手了。
有关键情节透露