[199]年,我写下《EfectioeC++》第一版。那本书几乎没有讨论template,因为它刚刚才被加入语言之中,我对它儿乎一无所知。为了书中包含的一点点template 代码,我曾通过电子邮件请别人验证,因为我手上的编译器都没有提供对template的支持。 1995 年,我写下《More Effective C++》。又一次,我几乎没有讲述template。这一次阻止我的,既不是对 template 知识的缺乏(在那本书的初稿中,我曾打算以一整章讲述template),也不是我的编译器在这方面有所缺陷。真正的理由是我担心,C++社群对tempiate的理解即将经历次巨大的变化,我对它所说的任何事情,也许很快就会被认为是陈旧的、肤浅的,甚至完全错误的。 我的担心出于两个原因。第一个原因和 John Barton 及 Lee Nackman 在C++ Report 1995年1月的一篇专栏文章有关。这篇文章讨论的是:如何经由template 执行型别安全的维度分析,同时做到运行期零成本。我自己也曾在这个问题上花了不少时间,而且我知道很多人也在寻找解答,但没有人成功。Barton 和 Nackman 的创新解法让我认识到,template 在太多的地方有用,不贝是用来生成“τ容器”。
身为C++标准库最重要的组成部分,STL(标准模板库)不仅是一个可复用组件库,而且是一个包罗算法与数据结构的软件框架(framework)。“框架”这个词,本身就 。 有庞大、稳定、完整而可扩展的涵义。软件框架,则是用一行行精细准确的源码,构造个庞大、稳定、完整而可扩展的软件架构。稍有软件开发经验的人都知道,要做到这些,谈何容易!STL在1994 年走人C++标准,使得原本即将推出的C++标准延迟4年问世而无怨无悔,并为之对内容做巨幅改进。而今STL不仅为千千万万C++程序员所日常运用,而且获得极高的学术赞誉,成为一个典范、一种境界。作为一个软件框架,STL所取得的成功,实在可以用“辉煌”来形容,其所内涵的软件思想和技术经验,更是无比的深厚与精致。 学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识乃至技术品位都会获得快速的成长。特别是面对STL这样优秀而普遍的作品,无论你是为了满足作为程序员第二天性的求知欲,还是在日常工作中解决实际问题,总有一天,你会打开一个叫做或者的头文件,想把STL背后的秘密看个究竟.英文里有一个常用短语,叫做“under the hood”,钻进魔术师的帐篷,屏住呼吸,瞪大眼睛,把那些奇妙的魔法看个通透,让自己的理解和技艺获得巨幅的提升,这种诱惑,任何一个程序员都无法抵挡!
本站基于Calibre构建,感谢开源界的力量。所有资源搜集于互联网,如有侵权请邮件联系。
Github | Docker | Library | Project
[199]年,我写下《EfectioeC++》第一版。那本书几乎没有讨论template,因为它刚刚才被加入语言之中,我对它儿乎一无所知。为了书中包含的一点点template 代码,我曾通过电子邮件请别人验证,因为我手上的编译器都没有提供对template的支持。 1995 年,我写下《More Effective C++》。又一次,我几乎没有讲述template。这一次阻止我的,既不是对 template 知识的缺乏(在那本书的初稿中,我曾打算以一整章讲述template),也不是我的编译器在这方面有所缺陷。真正的理由是我担心,C++社群对tempiate的理解即将经历次巨大的变化,我对它所说的任何事情,也许很快就会被认为是陈旧的、肤浅的,甚至完全错误的。 我的担心出于两个原因。第一个原因和 John Barton 及 Lee Nackman 在C++ Report 1995年1月的一篇专栏文章有关。这篇文章讨论的是:如何经由template 执行型别安全的维度分析,同时做到运行期零成本。我自己也曾在这个问题上花了不少时间,而且我知道很多人也在寻找解答,但没有人成功。Barton 和 Nackman 的创新解法让我认识到,template 在太多的地方有用,不贝是用来生成“τ容器”。