具体描述
学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。
这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memory pool和高阶抽象的traits机制的实现。
作者简介
目录信息
目录
前言
第1章 STL概论与版本简介
第2章 空间配置器(allocator)
第3章 迭代器(iterators)概念与traits编程技法
第4章 序列式容器(sequence containers)
第5章 关联式容器(associattive containers)
第6章 算法(algorithms)
第7章 仿函数(functors,另名 函数对象function objects)
第8章 配接器(adapters)
附录A 参考书籍与推荐读物
附录B 候捷网站(本书支持站点简介)
附录C STLPort 的移植经验(by孟岩)
索引
· · · · · · (收起)
读后感
最过瘾的一段就是2.2.10 内存池,SGI STL确实够份量。 当然书中也有瑕疵,如2.3节对POD的描述一处就够了,没必要copy & paste吧,有凑字之嫌~~~
STL很庞大,本书很好地萃取出了STL的主要内容(不考虑异常,多线程等相关代码),并加以详略得宜的剖析,让人觉得STL原来如此简单。因为是STL组件本身就有很多类似的地方,所以侯先生的行文大量复用之前文字(有时完全粘贴,有时稍作改动),读起来像读优秀代码一般痛快。
侯老师的stl源码剖析P380页6.7.5谈到了next_permutation。 给侯老师挑个刺,他在该页倒数第2行说“再将ii之后的所有元素颠倒排列”,对照其后的图示发现这样说不严谨。应该是将ii及其之后的所有元素颠倒排列,或者说将从ii开始的所有元素颠倒排列,或者干脆点,就是将i之后的所...
看完本书之后只有一个感觉:源码面前了无秘密。STL源代码并不算特别庞大,但如果初涉其中,一定会被各种形形色色的模板技巧、效率优化、看似杂乱的组织给迷乱了双眼。但作者于万军从中取上将首级,提干契领,很快便让读者抓住了主要脉落,但大刀阔斧之下又不丢失细节。尤其是在...
用户评价
这本书的内容,让我对STL的理解进入了一个全新的维度。我过去一直觉得STL只是一个“好用”的库,用就行了,但这本书让我明白了“好用”背后的“为什么”。从各个容器的内部实现机制,比如map和set是如何平衡二叉搜索树的,以及它们在插入、查找、删除时的复杂度是如何保证的,到算法部分,比如find、for_each、transform等,书中都进行了细致入微的讲解。我特别喜欢书中对迭代器失效问题的分析,以及如何避免这些问题,这在我平时的开发中帮助我规避了很多潜在的bug。此外,书中对STL一些边界情况的处理,以及在不同场景下的性能考量,都让我受益匪浅。例如,关于string的内部实现,书中也给了详细的解析,让我对字符串的操作有了更深的认识。读这本书的过程,更像是在和STL的设计者对话,理解他们的设计意图和巧妙之处。我感觉自己不再是那个只懂得调用API的普通用户,而是能够洞察STL底层运作的“内行人”。这种知识的提升,不仅体现在我的编码能力上,更体现在我对C++这门语言的理解深度上。
这本书就像一位博学的向导,带领我深入STL(Standard Template Library)的内核。在学习C++的过程中,STL无疑是绕不开的一环,但光是知道它的强大和常用还不够。这本书的魅力在于,它没有仅仅停留在“如何使用”的层面,而是剖析了“为什么这样设计”以及“它是如何实现的”。每当我看到一个STL容器或者算法,都会忍不住去翻阅书中的相关章节。例如,vector的动态扩容机制,书中详细解释了其内存分配策略,以及为什么会选择这样的倍增方式,这不仅让我理解了vector的效率,也让我对内存管理有了更深的体会。又比如,list的双向链表结构,在书中被清晰地绘制出来,每一个节点如何指向前一个和后一个,以及插入删除操作是如何做到O(1)的,这些细节的解释,让我豁然开朗,从一个使用者变成了对底层原理有深刻理解的开发者。书中对迭代器的讲解尤为精彩,它不仅仅是遍历的工具,更是STL设计哲学的重要体现,这本书让我明白,为什么vector和list的迭代器操作会有差异,以及这种差异背后的考量。读完这本书,我感觉自己对C++的掌握又上了一个新的台阶,不再是被动地接受STL,而是能够主动地思考和优化,甚至在某些场景下,能够设计出类似STL的组件。
对于任何想要深入理解C++泛型编程和STL精髓的开发者来说,这本书都堪称一本不可或缺的宝典。它不仅仅是一本技术手册,更像是一堂生动的“设计模式与实现”公开课。书中对STL各个组件的剖析,从最基础的allocator到复杂的算法,都展现了作者深厚的功底和严谨的逻辑。我尤其欣赏书中对于STL设计思想的阐述,例如“接口与实现分离”的原则,以及如何通过模板实现代码的高度复用和类型安全。在阅读过程中,我尝试着自己去复现一些STL的简单组件,比如一个自定义的vector或者list,而这本书提供的分析,则是我最宝贵的参考。书中对于一些常见STL问题的深入解答,比如为什么sort的效率会比insert sort高,以及在什么情况下选择list比vector更合适,这些实践性的指导,直接帮助我提升了代码的性能和可维护性。而且,书中还涉及了一些STL的底层优化技巧,比如迭代器的优化,以及内存管理的细节,这些内容对于追求极致性能的开发者来说,无疑是巨大的价值。总而言之,这本书为我打开了一扇通往STL世界的大门,让我能够更自信、更深入地使用C++。
读完这本书,我对STL的认识,已经从“知道怎么用”上升到了“理解为什么这么设计”。书中对STL各个组件的剖析,不仅仅是技术层面的讲解,更是一种思想的传递。我特别喜欢书中对STL兼容性和扩展性的讨论,比如iterator的层级分类,以及如何通过适配器模式来扩展STL的功能。在阅读过程中,我尝试着去思考,如果让我来设计一个类似STL的库,我会如何去实现?而这本书,就是我最好的老师。书中对各种算法的分析,比如find_if、count_if等,让我明白了函数式编程的思想是如何融入STL的。对于一些复杂算法的实现,比如accumulate,书中也给出了清晰的步骤和原理。甚至是一些小细节,比如allocator的设计,书中也进行了深入的探讨,让我明白了内存分配的复杂性和重要性。总而言之,这本书不仅仅是一本技术书籍,更是一本启迪思想的书籍,它让我看到了STL背后所蕴含的卓越设计理念和精巧实现。这对我而言,是一次宝贵的学习经历,让我在C++的道路上走得更远、更稳健。
这本书的价值,在于它不仅仅罗列了STL的各个组成部分,而是深入挖掘了它们的“灵魂”。我过去在编写C++程序时,虽然大量使用STL,但总觉得像是在使用一个黑盒子。这本书的出现,彻底改变了这种状况。书中对deque的剖析,让我理解了它为什么能够同时提供类似vector的随机访问和类似list的头尾插入删除的效率。对priority_queue的讲解,让我明白了堆(heap)这种数据结构是如何被巧妙地应用于优先级队列的。书中关于算法的阐述,更是让我认识到,很多我们习以为常的算法,背后有着精妙的设计和优化。例如,binary_search是如何通过折半查找来达到O(log n)的效率,以及sort算法在不同数据规模下的具体实现策略。这本书让我看到了STL的“艺术性”,不仅仅是功能的实现,更是对效率、抽象和可扩展性的极致追求。读完之后,我感觉自己在解决复杂问题时,能够更精准地选择合适的STL组件,并且能够更好地评估其性能影响。这对于提高我的开发效率和代码质量,起到了至关重要的作用。
略读完毕,耗时6h。STL还真有够小巧精致的。书非借不能读也!
任何完整的C++语法书籍都应该对xxx有所说明 (如果没有,扔了它@)。
上次没看懂,下回争取.
天下大事 必作于细
看第二章的时候忍住,我当年第一次读的时候总在第二章徘徊,好烦躁,后来一口气五天看完了,写得好棒啊!值得一再重读!