STL源码剖析

侯捷

出版时间

2002-05-31

ISBN

9787560926995

评分

★★★★★

标签

编程

书籍介绍

学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。

这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memory pool和高阶抽象的traits机制的实现。

AI导读
核心看点
  • 深入剖析STL六大组件源码实现
  • 详解空间配置器与迭代器traits技法
  • 揭示容器底层数据结构与算法优化
适合谁读
  • 希望深入理解C++ STL底层原理的开发者
  • 需要复习数据结构与算法的计算机学生
  • 追求代码极致效率与质量的资深程序员
读前提醒
  • 建议结合SGI STL源码对照阅读
  • 重点研读前两章空间配置与迭代器
  • 部分技术细节可能随标准演进已过时
读者共识
  • 源码面前了无秘密,提升编程艺术感
  • 堪称C++进阶必读的经典技术著作
  • 虽出版已久,核心思想依然极具价值

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "“hast_x都内含一个hashtable.”"
  • "accumulate的行为顺序有明确的定义: 先将init初始化,然后针对[first,last)区间中的每一个迭代器i,依序执行init = init + *i (第一版本)或init = binary_op(init,*i)(第二版本)。"
  • "算法adjacent_difference用来计算[first,last)中相邻元素的差额。也就是说,它将*first赋值给*result,并针对[first+1,last)内的每个迭代器i,将*i - *(i-1)之值赋值给*(result+(i-first))。 “存储第一元素之值,然后储存后继元素之差值”这种做法很有用,因为这么一来便有足够的信息可以重建输入区间的原始内容。如果加法与减法的定义一如常规定义,那么adjacent_difference与partial_sum互为逆运算。"
  • "算法inner_product能够计算[first1,last1)和[first2,first2+(last1-first1))的一般内积。注意,你一定得提供初值init。这么做的原因之一是当[first,last)为空时,仍可获得一个明确的结果。如果你想计算两个vectors的一般内积,应该将init设为0。 第一版本会将两个区间的内积结果加上init。也就是先将结果初始化为init,然后针对[first1,last1)的每一个迭代器i,由头至尾依序执行result = result + (*i)* *(first2+(i-first1)). 版本二用仿函数来取代operator+和oper"
  • "算法partial-sum用来计算局部综合。它会将*first赋值给*result,将*first和*(first+1)赋值给*(result+1)依此类推。注意result可以等于first,这使得我们得以完成就地(in place)计算。这种情况下它是一个质变算法。 运算中的总和首先初始为*first,然后赋值给*result。对于[first+1,last)中每一个迭代器i,从头到尾依序执行sum = sum + *i;(第一版本)或sum=binary——op(sum,*i)(第二版本),然后再将sum赋值给*(result + (i-first))。 本算法返回输出区间的最末端位置:"
  • "就是5.2.2节所说的那个"由上而下的程序""
  • "就是按照5.2.2节所说的那个"由上而下的程序"的调整规则进行调整的."
作者简介
侯俊杰(1961年9月28日-),笔名侯捷,台湾知名电脑技术专栏作家,致力于电脑技术之扎根工作,文章兼具科技之长与灵性之美,有读者的评语是“比作家更工程师,比工程师更作家”。大同国中、师大附中、交通大学土木系毕业、清华大学动力机械研究所硕士。曾任职工研院机械所与电通所,曾在元智大学授课,近年来多从事两岸学术交流工作。他的妻子美静是一名钢琴师,侯俊杰说他自己“嗜咖啡。妻严不能常得”。
目录
疱丁解牛(侯捷自序)
目录
前言
第1章 STL概论与版本简介
第2章 空间配置器(allocator)

显示全部
用户评论
上次没看懂,下回争取.
还要再读两遍
以前在图书馆里看见这本书总是不太想借,现在看看完才感叹相见恨晚。此书作为一个把STL精致巧妙的思想呈现给读者的引子,已经不能好更多了! 当然,想要了解的更深入还是得RTFSC。
这本书反复看过好几次,尤其是内存管理那块,可以配合侯捷老师的课程阅读效果更佳
略读完毕,耗时6h。STL还真有够小巧精致的。书非借不能读也!
还挺好懂的
终于看完了。个人认为精髓在 allocator 和 type traits 技法,其他的部分可以快速过一遍。
不理解为什么有些人会对侯捷老师嗤之以鼻
诠释优雅
书中大面积贴代码,而且是含义基本相同的代码,很影响观感。但内容是好的,读起来不累,收获很多。
下载
收藏