目录:
1 关于本书1
1.1 缘起1
1.2 阅读前的必要基础2
1.3 本书风格与结构2
1.4 如何阅读本书4
1.5 目前发展形式5
1.6 范例程序代码及额外信息5
1.7 回应5
2 C++ 及其标准程序库简介7
2.1 沿革7
2.2 新的语言特性9
2.2.1 Templates(模板) 9
2.2.2 基本型别的显式初始化(Explicit Initialization) 14
2.2.3 异常处理(Exception Handling) 15
.2.2.4 命名空间(Namespaces) 16
2.2.5 bool型别18
2.2.6 关键词explicit 18
2.2.7 新的型别转换操作符(Type Conversion Operators) 19
2.2.8 常数静态成员(Constant Static Members)的初始化20
2.2.9 main() 的定义21
2.3 复杂度和Big-O 表示法21
3 一般概念(General Concepts) 23
3.1 命名空间(namespace)std 23
3.2 头文件(Header Files) 24
3.3 错误(Error)处理和异常(Exception)处理25
3.3.1 标准异常类别(Standard Exception Classes) 25
3.3.2 异常类别(Exception Classes)的成员28
3.3.3 抛出标准异常29
3.3.4 从标准异常类别(Exception Classes)中派生新的类别30
3.4 配置器(Allocators) 31
4 通用工具(Utilities) 33
4.1 Pairs(对组) 33
4.1.1 便捷函数make_pair() 36
4.1.2 Pair运用实例37
4.2 Class auto_ptr 38
4.2.1 auto_ptr的发展动机38
4.2.2 auto_ptr拥有权(Ownership)的转移40
4.2.3 auto_ptrs 做为成员之一44
4.2.4 auto_ptrs 的错误运用46
4.2.5 auto_ptr运用实例47
4.2.6 auto_ptr实作细目51
4.3 数值极限(Numeric Limits) 59
4.4 辅助函数66
4.4.1 挑选较小值和较大值66
4.4.2 两值互换67
4.5 辅助性的“比较操作符”(Comparison Operators) 69
4.6 头文件[cstddef] 和[cstdlib] 71
4.6.1 [cstddef] 内的各种定义71
4.6.2 [cstdlib] 内的各种定义71
5 Standard Template Library(标准模板库) 73
5.1 STL 组件(STL Components) 73
5.2 容器(Containers) 75
5.2.1 序列式容器(Sequence Containers) 76
5.2.2 关联式容器(Associative Containers) 81
5.2.3 容器配接器(Container Adapters) 82
5.3 迭代器(Iterators) 83
5.3.1 关联式容器的运用实例86
5.3.2 迭代器类型(Iterator Categories) 93
5.4 算法(Algorithms) 94
5.4.1 区间(Ranges) 97
5.4.2 处理多个区间101
5.5 迭代器之配接器(Iterator Adapters) 104
5.5.1 Insert Iterators(安插型迭代器) 104
5.5.2 Stream Iterators(串流迭代器) 107
5.5.3 Reverse Iterators(逆向迭代器) 109
5.6 更易型算法(Manipulating Algorithms) 111
5.6.1 移除(Removing)元素111
5.6.2 更易型算法和关联式容器115
5.6.3 算法v.s. 成员函数116
5.7 使用者自定之泛型函数(User-Defined Generic Functions) 117
5.8 以函数做为算法的参数119
5.8.1“以函数做为算法的参数”实例示范119
5.8.2 判断式(Predicates) 121
5.9 仿函数(Functors or Function Objects) 124
5.9.1 什么是仿函数124
5.9.2 预先定义的仿函数131
5.10 容器内的元素(Container Elements) 134
5.10.1 容器元素的条件134
5.10.2 Value 语意vs. Reference 语意135
5.11 STL内部的错误处理和异常处理136
5.11.1 错误处理(Error Handling) 137
5.11.2 异常处理(Exception Handling) 139
5.12 扩展STL 141
6 STL 容器(Containers) 143
6.1 容器的共通能力和共通操作144
6.1.1 容器的共通能力144
6.1.2 容器的共通操作144
6.2 Vectors 148
6.2.1 Vectors 的能力148
6.2.2 Vector 的操作函数150
6.2.3 将Vectors 当做一般Arrays 使用155
6.2.4 异常处理155
6.2.5 Vectors 运用实例156
6.2.6 Class vector[bool] 158
6.3 Deques 160
6.3.1 Deques 的能力161
6.3.2 Deque 的操作函数162
6.3.3 异常处理(Exception Handling) 164
6.3.4 Deques 运用实例164
6.4 Lists 166
6.4.1 Lists 的能力166
6.4.2 List 的操作函数167
6.4.3 异常处理(Exception Handling) 172
6.4.4 Lists 运用实例172
6.5 Sets和Multisets
175
6.5.1 Sets 和Multisets 的能力176
6.5.2 Set 和Multiset 的操作177
6.5.3 异常处理(Exception Handling) 185
6.5.4 Sets 和Multisets 运用实例186
6.5.5 执行期指定排序准则(Sorting Criterion) 191
6.6 Maps 和Multimaps 194
6.6.1 Maps 和Multimaps 的能力195
6.6.2 Map 和Multimap 的操作函数196
6.6.3 将Maps 视为关联式数组(Associated Arrays) 205
6.6.4 异常处理(Exception Handling) 207
6.6.5 Maps 和Multimaps 运用实例207
6.6.6 综合实例:运用Maps, Strings 并于执行期指定排序准则213
6.7 其它的STL容器217
6.7.1 Strings 可被视为一种STL容器217
6.7.2 Arrays 可被视为一种STL容器218
6.7.3 Hash Tables 221
6.8 动手实现Reference 语意222
6.9 各种容器的运用时机226
6.10 细说容器内的型别和成员230
6.10.1 容器内的型别230
6.10.2 生成(Create)、复制(Copy)、销毁(Destroy) 231
6.10.3“非变动性操作(Nonmodifying Operations) 233
6.10.4 赋值(指派, Assignments) 236
6.10.5 直接元素存取237
6.10.6 “会产出迭代器”的各项操作239
6.10.7 元素的安插(Inserting)和移除(Removing) 240
6.10.8 Lists 的特殊成员函数244
6.10.9 对配置器(Allocator)的支持246
6.10.10 综观STL容器的异常处理248
7 STL 迭代器(Iterators) 251
7.1 迭代器头文件251
7.2 迭代器类型(Iterator Categories) 251
7.2.1 Input(输入)迭代器252
7.2.2 Output(输出)迭代器253
7.2.3 Forward(前向)迭代器254
7.2.4 Bidirectional(双向)迭代器255
7.2.5 Random Access(随机存取)迭代器255
7.2.6 Vector 迭代器的递增(Increment)和递减(Decrement) 258
7.3 迭代器相关辅助函数259
7.3.1 advance() 可令迭代器前进259
7.3.2 distance() 可处理迭代器之间的距离261
7.3.3 iter_swap() 可交换两个迭代器所指内容263
7.4 迭代器配接器(Iterator Adapters) 264
7.4.1 Reverse(逆向)迭代器264
7.4.2 Insert(安插型)迭代器271
7.4.3 Stream(串流)迭代器277
7.5 迭代器特性(Iterator Traits) 283
7.5.1 为迭代器编写泛型函数(Generic Functions) 285
7.5.2 使用者自定(User-Defined)的迭代器288
8 STL 仿函数(Functors or Function Objects) 293
8.1 仿函数的概念293
8.1.1 仿函数可当做排序准则(Sort Criteria) 294
8.1.2 仿函数可拥有自己的内部状态(Internal State) 296
8.1.3 for_each() 的回返值300
8.1.4 判断式(Predicates)和仿函数(Functors) 302
8.2 预定义的仿函数305
8.2.1 函数配接器(Function Adapters) 306
8.2.2 针对成员函数而设计的函数配接器307
8.2.3 针对一般函数(非成员函数)而设计的函数配接器309
8.2.4 让自定仿函数也可以使用函数配接器310
8.3 辅助用(组合型)仿函数313
8.3.1 一元组合函数配接器(Unary Compose Function Object Adapters) 314
8.3.2 二元组合函数配接器(Binary Compose Function Object Adapters) 318
9 STL 算法(Algorithms) 321
9.1 算法头文件(header files) 321
9.2 算法概观322
9.2.1 简介322
9.2.2 算法分门别类323
9.3 辅助函数332
9.4 for_each() 算法334
9.5 非变动性算法(Nonmodifying Algorithms) 338
9.5.1 计算元素个数338
9.5.2 求最大值和最小值339
9.5.3 搜寻元素341
9.5.4 区间的比较356
9.6 变动性算法(Modifying Algorithms) 363
9.6.1 复制(Copying)元素363
9.6.2 转换(Transforming)和结合(Combining)元素366
9.6.3 互换(Swapping)元素内容370
9.6.4 赋予(Assigning)新值372
9.6.5 替换(Replacing)元素375
9.7 移除性算法(Removing Algorithms) 378
9.7.1 移除某些特定元素378
9.7.2 移除重复元素381
9.8 变序性算法(Mutating Algorithms) 386
9.8.1 逆转(Reversing)元素次序386
9.8.2 旋转(Rotating)元素次序388
9.8.3 排列(Permuting)元素391
9.8.4 重排元素(Shuffling, 搅乱次序) 393
9.8.5 将元素向前搬移395
9.9 排序算法(Sorting Algorithms) 397
9.9.1 对所有元素排序397
9.9.2 局部排序(Partial Sorting) 400
9.9.3 根据第n 个元素排序404
9.9.4 Heap 算法406
9.10 已序区间算法(Sorted Range Algorithms) 409
9.10.1 搜寻元素(Searching) 410
9.10.2 合并元素(Merging) 416
9.11 数值算法(Numeric Algorithms) 425
9.11.1 加工运算后产生结果425
9.11.2 相对值和绝对值之间的转换429
......
详细信息:
* 原书名:The C++ Standard Library
* 作者: Nicolai M.Josuttis
* 译者: 侯捷[同译者作品] 孟岩
* 出版社:华中科技大学出版社
* 出版日期:2002 年9月
* 页码:820
C++ 标准程序库提供一组通用类别(classes)和接口(interfaces),可大幅扩充 C++ 核心语言。由于程序库本身并不容易,为了完整运用其组件并从其强大的威力中获得帮助,你需要一份完善的资源,而非一份仅仅陈列类和函数的普通文档。
《The C++ Standard Library》(中文版《C++ 标准程序库》)不仅对每一个程序库组件提供范围广泛的说明,也对繁杂的感念提供清楚明亮的解释,并描述高效运用这些组件时需要的实际编程细节,提出一个又一个的范例程序。
这本包含最新资料的完整书籍,反映出被 ANSI/ISO C++ 语言标准规格书纳入的 C++ 标准程序库的结构。更明确地说,本书将焦点放在标准模板库(Standard Template Library)身上,检验其中的容器(containers)、迭代器(iterators)、仿函数(functors)和算法(algorithms)。你还可以找到特殊容器、字符串(strings)、数值类别、国际化议题、IOStream。每一个组件都有深刻的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的确切标记(signature)和定义。一份见解深刻的基础概念介绍和一个程序库综合鸟瞰,会对新手带来快速的提升。
《The C++ Standard Library》范围广泛、详细、可读性高、实用, 是值得你一再查阅的 C++ 宝贵资源。本书网站
http://www.josuttis.com/libbook,其中提供书中源码下载。