第0章 导读 1
0.1关于本书 1
0.2读者对象 1
0.3本书的术语与风格 2
0.4本书的结构 3
0.5如何阅读本书 5
第1章 Boost程序库总论 7
1.1关于Boost 7
1.1.1什么是Boost 7
1.1.2安装Boost 8
1.1.3使用Boost 8
1.2关于STLport 9
1.2.1什么是STLport 9
1.2.2安装STLport 10
1.2.3使用STLport 10
1.3开发环境 10
1.3.1 STLport的编译方法 11
1.3.2 Boost的编译方法 11
1.3.3 Visual Studio 2005环境设置 15
第2章 时间与日期 17
2.1 timer库概述 17
2.2 timer 17
2.2.1用法 18
2.2.2类摘要 18
2.2.3使用建议 19
2.3 progress timer 20
2.3.1用法 20
2.3.2类摘要 21
2.3.3扩展计时精度 21
2.4 progress_displa 23
2.4.1类摘要 24
2.4.2用法 25
2.4.3注意事项 26
2.5 date_time库概述 27
2.5.1编译date_time库 27
2.5.2 date time库的基本概念 28
2.6处理日期 29
2.6.1日期 29
2.6.2创建日期对象 30
2.6.3访问日期 31
2.6.4日期的输出 32
2.6.5与tm结构的转换 33
2.6.6日期长度 34
2.6.7日期运算 35
2.6.8日期区间 36
2.6.9 日期区间运算 38
2.6.10日期迭代器 39
2.6.11其他功能 40
2.6.12综合运用 40
2.7处理时间 43
2.7.1时间长度 43
2.7.2操作时间长度 45
2.7.3时间长度的精确度 46
2.7.4时间点 48
2.7.5创建时间点对象 48
2.7.6操作时间点对象 49
2.7.7与tm、time t等结构的转换 50
2.7.8时间区间 51
2.7.9时间迭代器 51
2.7.10综合运用 52
2.8 date time库的高级议题 54
2.8.1编译配置宏 54
2.8.2格式化时间 55
2.8.3本地时间 56
2.8.4序列化 57
2.9总结 58
第3章 内存管理 61
3.1 smart_ptr库概述 61
3.1.1 RAH机制 61
3.1.2智能指针 62
3.2 scoped_ptr 63
3.2.1类摘要 63
3.2.2操作函数 64
3.2.3用法 65
3.2.4与auto_ptr的区别 66
3.3 scoped_array 67
3.3.1类摘要 67
3.3.2用法 68
3.3.3使用建议 69
3.4 shared_ptr 69
3.4.1类摘要 70
3.4.2操作函数 70
3.4.3用法 72
3.4.4工厂函数 74
3.4.5应用于标准容器 75
3.4.6应用于桥接模式 76
3.4.7应用于工厂模式 77
3.4.8定制删除器 78
3.4.9高级议题 80
3.5 shared_array 81
3.5.1类摘要 81
3.5.2用法 82
3.6 weak_ptr 82
3.6.1类摘要 82
3.6.2用法 83
3.6.3获得this的shared_ptr 84
3.7 intrusive_ptr 85
3.8 pool库概述 85
3.9 pool 85
3.9.1类摘要 86
3.9.2操作函数 86
3.9.3用法 87
3.10 object_pool 88
3.10.1类摘要 88
3.10.2操作函数 88
3.10.3用法 89
3.10.4使用更多的构造参数 90
3.11 singleton_pool 91
3.11.1类摘要 91
3.11.2用法 92
3.12 pool_alloc 93
3.13总结 93
第4章 实用工具 95
4.1 noncopyable 95
4.1.1原理 96
4.1.2用法 96
4.2 typeof 97
4.2.1动机 97
4.2.2用法 99
4.2.3向typeof库注册自定义类 100
4.2.4高级议题 101
4.3 optional 101
4.3.1“无意义”的值 101
4.3.2类摘要 102
4.3.3操作函数 102
4.3.4用法 103
4.3.5工厂函数 104
4.3.6高级议题 105
4.4 assign 106
4.4.1使用操作符+=向容器增加元素 106
4.4.2使用操作符()向容器增加元素 107
4.4.3初始化容器元素 108
4.4.4减少重复输入 110
4.4.5与非标准容器工作 111
4.4.6高级用法 112
4.5 swap 113
4.5.1原理 113
4.5.2交换数组 114
4.5.3特化std::swap 114
4.5.4特化ADL可找到的swap 115
4.5.5使用建议 116
4.6 singleton 116
4.6.1 boost.pool的单件实现 117
4.6.2 boost.serialzation的单件实现 119
4.7 tribool 121
4.7.1类摘要 121
4.7.2用法 122
4.7.3为第三态更名 122
4.7.4输入输出 123
4.7.5与optional<bool>的区别 124
4.8 operators 125
4.8.1基本运算概念 126
4.8.2算术操作符的用法 127
4.8.3基类链 129
4.8.4复合运算概念 130
4.8.5相等与等价 131
4.8.6解引用操作符 133
4.8.7下标操作符 134
4.8.8高级议题 135
4.9 exception 136
4.9.1标准库中的异常 136
4.9.2类摘要 137
4.9.3向异常传递信息 138
4.9.4更进一步的用法 140
4.9.5包装标准异常 142
4.9.6使用函数抛出异常 143
4.9.7获得更多的调试信息 144
4.9.8高级议题 145
4.10 uuid 146
4.10.1类摘要 147
4.10.2用法 148
4.10.3生成器 150
4.10.4增强的uuid类 152
4.10.5与字符串的转换 153
4.10.6 SHA1摘要算法 154
4.11 config 155
4.11.1 BOOST_STRINGIZE 155
4.11.2 BOOST_STATIC_CONSTANT 155
4.11.3禁止编译器警告 156
4.11.4其他工具 157
4.12 utility 157
4.12.1 BOOST_BINARY 157
4.12.2 BOOST_CURRENT_FUNCTION 158
4.13总结 160
第5章 字符串与文本处理 163
5.1 lexical_cast 163
5.1.1用法 164
5.1.2异常bad_lexical_cast 165
5.1.3对转换对象的要求 166
5.1.4应用于自己的类 166
5.2 format 167
5.2.1简单的例子 168
5.2.2输入操作符% 169
5.2.3类摘要 171
5.2.4格式化语法 172
5.2.5 format的性能 173
5.2.6高级用法 173
5.3 string_algo 175
5.3.1简单的例子 175
5.3.2 string_algo概述 176
5.3.3大小写转换 177
5.3.4判断式(算法) 178
5.3.5判断式(函数对象) 179
5.3.6分类 180
5.3.7修剪 181
5.3.8查找 182
5.3.9替换与删除 184
5.3.10分割 186
5.3.11合并 187
5.3.12查找(分割)迭代器 188
5.4 tokenizer 189
5.4.1类摘要 190
5.4.2用法 190
5.4.3分词函数对象 191
5.4.4 char_separator 192
5.4.5 escaped_list_separator 193
5.4.6 offset_separator 193
5.4.7 tokenizer库的缺陷 195
5.5 xpressive 196
5.5.1两种使用方式 197
5.5.2正则表达式语法简介 197
5.5.3类摘要 199
5.5.4匹配 200
5.5.5查找 203
5.5.6替换 204
5.5.7迭代 206
5.5.8分词 207
5.5.9与regex的区别 208
5.5.10高级议题 209
5.6总结 211
第6章 正确性与测试 213
6.1 assert 213
6.1.1基本用法 213
6.1.2禁用断言 214
6.1.3扩展用法 215
6.1.4 BOOST VERIFY 216
6.2 static assert 217
6.2.1用法 217
6.2.2使用建议 218
6.3 test 219
6.3.1编译test库 219
6.3.2最小化的测试套件 220
6.3.3单元测试框架简介 221
6.3.4测试断言 222
6.3.5测试用例与套件 223
6.3.6 测试实例 224
6.3.7测试夹具 226
6.3.8测试日志 228
6.3.9运行参数 229
6.3.10函数执行监视器 230
6.3.11程序执行监视器 233
6.3.12高级议题 234
6.4总结 236
第7章 容器与数据结构 239
7.1 array 239
7.1.1类摘要 240
7.1.2操作函数 240
7.1.3用法 241
7.1.4能力限制 242
7.1.5 array的初始化 242
7.1.6实现ref_array 243
7.1.7 ref_array的用法 244
7.2dynamic_bitset 245
7.2.1类摘要 245
7.2.2创建与赋值 247
7.2.3容器操作 248
7.2.4位运算与比较运算 249
7.2.5访问元素 249
7.2.6类型转换 251
7.2.7集合操作 251
7.2.8综合运用 252
7.3 unordered 253
7.3.1散列集合简介 254
7.3.2散列集合的用法 255
7.3.3散列映射简介 256
7.3.4散列映射的用法 256
7.3.5性能比较 257
7.3.6高级议题 259
7.4 bimap 260
7.4.1类摘要 261
7.4.2基本用法 262
7.4.3值的集合类型 263
7.4.4集合类型的用法 264
7.4.5使用标签类型 266
7.4.6使用assign库 267
7.4.7查找与替换 268
7.4.8投射 269
7.4.9高级议题 270
7.5 circular_buffer 271
7.5.1类摘要 271
7.5.2用法 272
7.5.3环型缓冲区 273
7.5.4空间优化型缓冲区 275
7.6 tuple 275
7.6.1最简单的tuple:pair 276
7.6.2类摘要 276
7.6.3创建与赋值 277
7.6.4访问元素 278
7.6.5比较操作 279
7.6.6输入输出 280
7.6.7连结变量 281
7.6.8应用于assign库 282
7.6.9应用于exception库 282
7.6.10内部结构 282
7.6.11使用访问者模式 283
7.6.12高级议题 285
7.7 any 287
7.7.1类摘要 287
7.7.2访问元素 288
7.7.3用法 289
7.7.4简化的操作函数 290
7.7.5保存指针 291
7.7.6输出 292
7.7.7应用于容器 293
7.8 variant 294
7.8.1类摘要 294
7.8.2访问元素 295
7.8.3用法 296
7.8.4访问器 297
7.8.5与any的区别 300
7.8.6高级议题 300
7.9 multi array 302
7.9.1类摘要 302
7.9.2用法 304
7.9.3多维数组生成器 306
7.9.4改变形状和大小 307
7.9.5创建子视图 308
7.9.6适配普通数组 310
7.9.7高级议题 311
7.10 proper_tree 314
7.10.1类摘要 315
7.10.2读取配置信息 316
7.10.3写入配置信息 318
7.10.4更多用法 319
7.10.5 XML数据格式 320
7.10.6其他数据格式 321
7.10.7高级议题 323
7.11总结 324
第8章 算法 327
8.1 foreach 327
8.1.1用法 328
8.1.2详细解说 329
8.1.3使用typeof 330
8.1.4更优雅的名字 330
8.1.5支持的序列类型 331
8.1.6一个小问题 332
8.2 minmax 332
8.2.1用法 333
8.2.2使用tuples::tie 334
8.3 minmax_element 334
8.3.1用法 335
8.3.2其他函数的用法 335
8.4总结 336
第9章 数学与数字 337
9.1 integer 337
9.1.1 integer_traits 337
9.1.2标准整数类型 339
9.1.3整数类型模板类 341
9.2 rational 344
9.2.1类摘要 344
9.2.2创建与赋值 345
9.2.3算术运算与比较运算 346
9.2.4类型转换 346
9.2.5输入输出 347
9.2.6分子与分母 347
9.2.7与数学函数配合工作 347
9.2.8异常 348
9.2.9 rational的精度 348
9.2.10实现无限精度的整数类型 348
9.2.11最大公约数和最小公倍数 353
9.3 CRC 353
9.3.1类摘要 354
9.3.2预定义的实现类 354
9.3.3计算CRC 355
9.3.4 CRC函数 356
9.3.5自定义CRC函数 357
9.4 random 357
9.4.1伪随机数发生器 358
9.4.2伪随机数发生器的构造 358
9.4.3伪随机数发生器的拷贝 359
9.4.4随机数分布器 360
9.4.5随机数分布器类摘要 361
9.4.6随机数分布器用法 363
9.4.7变量发生器 364
9.4.8产生随机数据块 365
9.4.9真随机数发生器 367
9.4.10实现真随机数发生器 368
9.5总结 369
第10章 操作系统相关 371
10.1 io_state_savers 371
10.1.1类摘要 372
10.1.2用法 372
10.1.3简化new_progress_timer 374
10.2 system 374
10.2.1编译system库 375
10.2.2错误值枚举 375
10.2.3错误类别 376
10.2.4错误代码 377
10.2.5错误异常 379
10.3 filesystem 380
10.3.1编译filesystem库 380
10.3.2类摘要 381
10.3.3路径表示 383
10.3.4可移植的文件名 384
10.3.5路径处理 385
10.3.6异常 387
10.3.7文件状态 388
10.3.8文件属性 390
10.3.9文件操作 391
10.3.10迭代目录 392
10.3.11实例1:实现查找文件功能 394
10.3.12实例2:实现模糊查找文件功能 395
10.3.13实例3:实现拷贝目录功能 397
10.3.14文件流操作 399
10.4 program_options 399
10.4.1编译program_options库 400
10.4.2概述 401
10.4.3选项值 403
10.4.4选项描述器 404
10.4.5选项描述器的用法 405
10.4.6分析器 407
10.4.7存储器 408
10.4.8使用位置选项值 409
10.4.9分析环境变量 411
10.4.10分组选项信息 412
10.4.11高级用法 413
10.5总结 417
第11章 函数与回调 419
11.1 result_Of 419
11.1.1原理 420
11.1.2用法 422
11.2 ref 422
11.2.1类摘要 423
11.2.2基本用法 424
11.2.3工厂函数 425
11.2.4操作包装 425
11.2.5综合应用 426
11.2.6为ref增加函数调用功能 427
11.3 bind 429
11.3.1工作原理 429
11.3.2绑定普通函数 430
11.3.3绑定成员函数 432
11.3.4绑定成员变量 433
11.3.5绑定函数对象 433
11.3.6使用ref库 434
11.3.7高级议题 435
11.4 function 437
11.4.1类摘要 437
11.4.2 function的声明 438
11.4.3操作函数 439
11.4.4比较操作 440
11.4.5用法 440
11.4.6使用ref库 441
11.4.7用于回调 442
11.4.8与typeof的区别 445
11.5 signals2 445
11.5.1类摘要 446
11.5.2操作函数 447
11.5.3插槽的连接与调用 448
11.5.4信号的返回值 449
11.5.5合并器 450
11.5.6管理信号的连接 452
11.5.7更灵活的管理信号连接 453
11.5.8自动连接管理 455
11.5.9应用于观察者模式 457
11.5.10高级议题 460
11.6总结 465
第12章 并发编程 467
12.1 thread 467
12.1.1编译thread库 468
12.1.2使用thread库 468
12.1.3时间功能 469
12.1.4互斥量 469
12.1.5线程对象 472
12.1.6创建线程 473
12.1.7操作线程 475
12.1.8中断线程 476
12.1.9线程组 479
12.1.10条件变量 480
12.1.11共享互斥量 484
12.1.12 future 485
12.1.13高级议题 488
12.2 asio 493
12.2.1概述 493
12.2.2定时器 494
12.2.3定时器用法 495
12.2.4网络通信简述 498
12.2.5 IP地址和端点 499
12.2.6同步socket处理 500
12.2.7异步socket处理 502
12.2.8查询网络地址 506
12.2.9高级议题 507
12.3总结 511
第13章 编程语言支持 513
13.1 python库概述 513
13.1.1 Python语言简介 514
13.1.2安装Python环境 515
13.1.3编译python库 515
13.1.4使用python库 516
13.2嵌入Python 517
13.2.1初始化解释器 517
13.2.2封装Python对象 518
13.2.3执行Python语句 520
13.2.4异常处理 521
13.3扩展Python 522
13.3.1最简单的例子 523
13.3.2导出函数 525
13.3.3导出重载函数 526
13.3.4导出类 528
13.3.5导出类的更多细节 530
13.3.6高级议题 532
13.4总结 534
第14章 其他Boost组件 537
14.1字符串和文本处理 537
14.2容器与数据结构 538
14.3迭代器 539
14.4函数对象与高级编程 539
14.5泛型编程 540
14.6模板元编程 541
14.7预处理元编程 542
14.8并发编程 542
14.9数学与数字 543
14.10 TR1实现 543
14.11输入输出 544
14.12杂项 544
14.13总结 546
第15章 Boost与设计模式 547
15.1创建型模式 547
15.2结构型模式 549
15.3行为模式 552
15.4其他模式 555
15.5总结 556
第16章 结束语 559
16.1未臻完美的Boost 559
16.2让Boost工作得更好 560
16.3工夫在诗外 563
附录A 推荐书目 565
附录B 网络资源 567
附录C C++标准简述 569
附录D STL简述 571
附录E ref_array实现代码 573