第一部分 基本工具 1
第1章 元组 1
1.1 头文件〈tuple〉的摘要 2
1.2 tuple类模板 2
1.3 像tuple一样对std::pair进行存取 10
1.4 练习 12
第2章 智能指针 16
2.1 定义 16
2.2 关于示例 17
2.3 头文件〈memory〉的摘要 18
2.4 shared_ptr类模板 19
2.5 类模板weak_ptr 32
2.6 类模板enable_shared_from_this 41
2.7 bad_weak_ptr类 43
2.8 转换 43
2.9 受控资源的析构 48
2.10 异常 50
2.11 多线程 52
2.12 练习 52
第二部分 容器 59
第3章 基础知识 59
3.1 STL部件 59
3.2 容器 63
3.3 进一步阅读 66
3.4 练习 66
第4章 类模板array 68
4.1 类模板array概述 70
4.2 信息获取 73
4.3 访问 73
4.4 修改 75
4.5 迭代 76
4.6 内嵌类型名称 77
4.7 比较 79
4.8 与tuple类似的接口 80
4.9 练习 80
第5章 无序关系容器 82
5.1 对散列表进行标准化 82
5.2 散列表 83
5.3 关系容器和无序容器 85
5.4 对无序容器的要求 85
5.5 头文件〈unordered_map〉和〈unordered_set〉 90
5.6 类模板hash 91
5.7 无序容器的实例化 93
5.8 构造函数 94
5.9 容器操作 94
5.10 负载因子和重散列 97
5.11 优化 98
5.12 进一步阅读 99
5.13 练习 99
第三部分 调用包装器 101
第6章 调用包装器基础 101
6.1 术语 101
6.2 对可调用类型的要求 103
6.3 头文件〈functional〉的摘要 105
6.4 类模板result_of 106
6.5 与现存的函数对象进行交互 108
6.6 练习 111
第7章 mem_fn函数模板 114
第8章 reference_wrapper类模板 120
8.1 创建 121
8.2 内嵌类型 123
8.3 调用 124
8.4 练习 125
第9章 类模板function 127
9.1 构造一个function对象 128
9.2 访问 130
9.3 修改 130
9.4 比较 132
9.5 内嵌类型 133
9.6 调用 133
9.7 目标对象 134
9.8 练习 135
第10章 函数模板bind 137
10.1 占位符 138
10.2 unspecified bind(...) 139
10.3 对bind进行扩展 146
10.4 练习 146
第四部分 类型特性 149
第11章 类型特性概述 149
11.1 头文件〈type_traits〉 151
11.2 辅助类型 153
11.3 基本类型 154
11.4 复合类型 156
11.5 类型属性 156
11.6 类型关系 162
11.7 类型变换 163
11.8 对齐 165
11.9 进一步阅读 166
11.10 练习 166
第五部分 数值 169
第12章 数值函数 169
12.1 关于示例 169
12.2 浮点值的表示 170
12.3 管理浮点环境 173
12.4 无穷大、非规范数、NaN和比较 179
12.5 定义域和值域错误 180
12.6 新的重载规则 180
12.7 基本数学函数 181
12.8 数学特殊函数 194
12.9 复函数 203
12.10 进一步阅读 208
12.11 练习 208
第13章 随机数生成器 213
13.1 随机数引擎 215
13.2 TR1中的引擎模板 218
13.3 TR1库中的random_device类 224
13.4 TR1库中的预定义引擎 225
13.5 随机数分布 226
13.6 离散分布 228
13.7 连续分布 231
13.8 类模板variate_generator 234
13.9 进一步阅读 238
13.10 练习 239
第六部分 正则表达式 241
第14章 头文件〈regex〉 241
第15章 正则表达式语法 245
15.1 正则表达式结构 246
15.2 语法特性 250
15.3 正则表达式细节 250
15.4 关于练习 256
15.5 练习 257
第16章 正则表达式对象 259
16.1 定义 259
16.2 头文件〈regex〉的部分摘要 261
16.3 语法选项 261
16.4 basic_regex类模板 265
16.5 预定义的basic_regex类型 272
16.6 错误处理 272
16.7 练习 274
第17章 查找 276
17.1 头文件〈regex〉的部分摘要 278
17.2 完整匹配 279
17.3 查找 280
17.4 查找选项 281
17.5 练习 286
第18章 查找结果 289
18.1 头文件〈regex〉的部分摘要 290
18.2 sub_match类模板 291
18.3 预定义的sub_match类型 299
18.4 类模板match_results 300
18.5 练习 307
第19章 重复查找 309
19.1 暴力查找 311
19.2 regex_iterator类模板 317
19.3 regex_token_iterator类模板 326
19.4 练习 335
第20章 格式化和文本替换 337
20.1 格式化选项 340
20.2 格式化文本 341
20.3 文本替换 342
20.4 练习 345
第21章 正则表达式的定制 347
21.1 字符特性 348
21.2 locale 348
21.3 字符匹配 348
21.4 归并 349
21.5 字符类别 350
21.6 regex_traits类模板 351
第七部分 C语言兼容 353
第22章 C语言兼容 353
22.1 整数类型 353
22.2 64位整数类型 354
22.3 固定大小的整数类型 357
22.4 文本转换 362
22.5 格式化说明符 363
22.6 格式化I/O 368
22.7 字符分类 370
22.8 布尔类型 371
22.9 练习 371
附录 373
附录A 头文件 373
附录B 辅助头文件 402
附录C 多线程 407
参考文献 410