泛型程序设计与C++标准库 1
条款1:流 1
条款2:Predicates,之一:removeO删除了什么? 7
条款3:Predicates,之二:状态带来的问题 12
条款4:可扩充的模板:使用继承还是traits? 22
条款5:typename 40
条款6:容器、指针和“不是容器的容器” 45
条款7:使用vector和deque 56
条款8:使用set和map 65
条款9:等同的代码吗? 72
条款10:模板特殊化与重载 78
条款11:Mastermind 84
优化与性能 100
条款12:内联 100
条款13:缓式优化,之一:一个普通的旧式String 1104
条款14:缓式优化,之二:引入缓式优化 108
条款15:缓式优化,之三:迭代器与引用 113
条款16:缓式优化,之四:多线程环境 125
异常安全议题及技术 139
条款17:构造函数失败,之一:对象生命期 139
条款18:构造函数失败,之二:吸收异常? 144
条款19:未捕获的异常 153
条款20:未管理指针存在的问题,之一:参数求值 160
条款21:未管理指针存在的问题,之二:使用auto ptr? 164
条款22:异常安全与类的设计,之一:复制赋值 171
条款23:异常安全与类的设计,之二:继承 181
继承与多态 187
条款24:为什么要使用多继承? 187
条款25:模拟多继承 191
条款26:多继承与连体双婴问题 195
条款27:(非)纯虚函数 200
条款28:受控的多态 207
内存及资源管理 210
条款29:使用auto_ptr 210
条款30:智能指针成员,之一:auto ptr存在的问题 219
条款31:智能指针成员,之二:设计ValuePtr 225
自由函数与宏 239
条款32:递归声明 239
条款33:模拟嵌套函数 245
条款34:预处理宏 256
条款35:宏定义 260
杂项议题 265
条款36:初始化 265
条款37:前置声明 269
条款38:typedef 271
条款39:名字空间,之一:using声明和using指令 275
条款40:名字空间,之二:迁徙到名字空间 278
后记 293
附录A:(在多线程环境下)并非优化 294
附录B:单线程String实现与多线程安全String实现的对比测试结果 313
参考文献 323
索引 325