Boost是1个功能齐全、结构精致、平台、开源系统而且免费手机软件的C++程序库,拥有“C++‘准’标准库”的美名。 Boost由C++规范联合会一部分组员所开设的Boost小区开发设计并维护保养,应用了很多当代C++编程技术,内容包括字符数组解决、正则表达式、器皿与数据结构、高并发程序编写、函数式编程、泛型程序编写、设计模式保持等很多行业,巨大地丰富多彩了C++的作用和感染力,可以使C++开发软件更为简练、雅致、灵便和高效率。
《Boost程序库完全开发指南——深入C++"准”标准库(第4版)》根据2017年4月公布的Boost1.64版,详细介绍了在其中的全部140多个库,而且融合C++11/14/17规范详尽、深层次地解读了在其中数个库,一起保持了多个极具实际意义的工具类和函数,可协助用户快速地了解、把握Boost的使用方法并运用于具体的开发设计工作中。
目录
- 0.1 关于本书. 1
- 0.2 读者对象. 1
- 0.3 术语与风格 2
- 0.4 语言标准. 3
- 0.5 本书的结构 4
- 0.6 如何阅读本书. 5
- 0.7 本书的源码 5
- 第 1 章总论 7
- 1.1 简介 7
- 1.1.1 获取方式 8
- 1.1.2 目录结构 8
- 1.1.3 使用方式 9
- 1.2 开发环境. 9
- 1.2.1 操作系统和编译器.10
- 1.2.2 快捷安装10
- 1.2.3 完全安装10
- 1.2.4 定制安装11
- 1.2.5 编译验证11
- 1.3 构建工具12
- 1.3.1 安装方式12
- 1.3.2 构建脚本12
- 1.3.3 构建语言.13
- 1.3.4 构建命令.14
- 1.4 总结14
- 第 2 章时间与日期15
- 2.1 timer 库概述15
- 2.2 timer16
- 2.2.1 用法16
- 2.2.2 类摘要17
- 2.2.3 使用建议.18
- 2.3 progress_timer 18
- 2.3.1 用法18
- 2.3.2 类摘要19
- 2.4 progress_display19
- 2.4.1 类摘要20
- 2.4.2 用法21
- 2.4.3 注意事项.22
- 2.5 date_time 库概述.23
- 2.5.1 使用方式.23
- 2.5.2 基本概念.24
- 2.6 处理日期24
- 2.6.1 日期25
- 2.6.2 创建日期对象25
- 2.6.3 访问日期27
- 2.6.4 日期的输出.28
- 2.6.5 转换C 结构29
- 2.6.6 日期长度29
- 2.6.7 日期运算30
- 2.6.8 日期区间31
- 2.6.9 日期区间运算33
- 2.6.10 日期迭代器34
- 2.6.11 其他功能35
- 2.6.12 综合运用36
- 2.7 处理时间38
- 2.7.1 时间长度39
- 2.7.2 操作时间长度40
- 2.7.3 时间精确度.42
- 2.7.4 时间点43
- 2.7.5 创建时间点对象44
- 2.7.6 操作时间点对象44
- 2.7.7 转换C 结构45
- 2.7.8 时间区间46
- 2.7.9 时间迭代器.46
- 2.7.10 综合运用47
- 2.8 date_time 库的高级议题49
- 2.8.1 编译配置宏.50
- 2.8.2 自定义字面值50
- 2.8.3 格式化时间.51
- 2.8.4 本地时间51
- 2.9 总结53
- 第 3 章内存管理.55
- 3.1 smart_ptr 库概述55
- 3.1.1 RAII 机制55
- 3.1.2 智能指针56
- 3.2 scoped_ptr57
- 3.2.1 类摘要57
- 3.2.2 操作函数58
- 3.2.3 用法59
- 3.2.4 对比标准.61
- 3.3 shared_ptr63
- 3.3.1 类摘要63
- 3.3.2 操作函数.64
- 3.3.3 用法65
- 3.3.4 工厂函数.67
- 3.3.5 应用于标准容器68
- 3.3.6 应用于桥接模式69
- 3.3.7 应用于工厂模式70
- 3.3.8 定制删除器.72
- 3.3.9 高级议题.73
- 3.4 weak_ptr.76
- 3.4.1 类摘要76
- 3.4.2 用法77
- 3.4.3 对象自我管理78
- 3.4.4 打破循环引用79
- 3.5 intrusive_ptr.80
- 3.5.1 类摘要80
- 3.5.2 用法81
- 3.5.3 引用计数器.82
- 3.6 pool 库概述.83
- 3.7 pool83
- 3.7.1 类摘要84
- 3.7.2 操作函数.84
- 3.7.3 用法85
- 3.8 object_pool 86
- 3.8.1 类摘要86
- 3.8.2 操作函数.86
- 3.8.3 用法87
- 3.8.4 更多的构造参数88
- 3.9 singleton_pool 89
- 3.9.1 类摘要89
- 3.9.2 用法90
- 3.10 pool_alloc 91
- 3.11 总结91
- 第 4 章实用工具.93
- 4.1 noncopyable.93
- 4.1.1 原理94
- 4.1.2 用法94
- 4.1.3 实现95
- 4.2 ignore_unused.96
- 4.2.1 基本用法96
- 4.2.2 模板用法97
- 4.3 optional97
- 4.3.1 类摘要98
- 4.3.2 操作函数99
- 4.3.3 用法.100
- 4.3.4 工厂函数101
- 4.4 assign.102
- 4.4.1 list_inserter102
- 4.4.2 operator+=.103
- 4.4.3 operator ()104
- 4.4.4 generic_list105
- 4.4.5 初始化容器106
- 4.4.6 重复输入108
- 4.4.7 操作非标准容器109
- 4.4.8 其他议题110
- 4.5 tribool 110
- 4.5.1 类摘要110
- 4.5.2 用法.111
- 4.5.3 为第三态更名.112
- 4.5.4 输入/输出.113
- 4.5.5 其他议题113
- 4.6 operators114
- 4.6.1 基本运算概念.116
- 4.6.2 算术操作符116
- 4.6.3 基类链118
- 4.6.4 复合运算概念.119
- 4.6.5 相等与等价121
- 4.6.6 解引用操作符.122
- 4.6.7 下标操作符123
- 4.6.8 布尔转型操作符124
- 4.6.9 二元操作符126
- 4.7 exception.126
- 4.7.1 标准库中的异常127
- 4.7.2 类摘要127
- 4.7.3 向异常传递信息129
- 4.7.4 错误信息类130
- 4.7.5 包装标准异常.132
- 4.7.6 使用函数抛出异常132
- 4.7.7 获得更多信息.133
- 4.7.8 高级议题134
- 4.8 uuid.136
- 4.8.1 类摘要136
- 4.8.2 用法.137
- 4.8.3 生成器139
- 4.8.4 增强用法141
- 4.8.5 转换字符串142
- 4.8.6 摘要算法143
- 4.9 config.144
- 4.9.1 编译期字符串化144
- 4.9.2 静态整型常量.145
- 4.10 utility 145
- 4.10.1 二进制常量146
- 4.10.2 调用函数名147
- 4.11 总结.148
- 第 5 章字符串与文本处理151
- 5.1 lexical_cast 151
- 5.1.1 函数声明152
- 5.1.2 用法.152
- 5.1.3 错误处理153
- 5.1.4 转换对象的要求154
- 5.1.5 应用于自定义类155
- 5.1.6 对比标准156
- 5.2 format 157
- 5.2.1 简单的例子157
- 5.2.2 输入操作符159
- 5.2.3 类摘要160
- 5.2.4 格式化语法161
- 5.2.5 性能优化162
- 5.2.6 高级用法162
- 5.3 string_ref164
- 5.3.1 类摘要164
- 5.3.2 用法.166
- 5.4 string_algo167
- 5.4.1 简单示例168
- 5.4.2 算法概述169
- 5.4.3 大小写转换169
- 5.4.4 判断式(算法) 170
- 5.4.5 判断式(函数对象)172
- 5.4.6 分类.172
- 5.4.7 修剪.173
- 5.4.8 查找.174
- 5.4.9 替换与删除176
- 5.4.10 分割177
- 5.4.11 合并179
- 5.4.12 查找(分割)迭代器179
- 5.5 xpressive181
- 5.5.1 使用方式181
- 5.5.2 正则表达式简介182
- 5.5.3 类摘要183
- 5.5.4 正则匹配185
- 5.5.5 正则查找187
- 5.5.6 正则替换188
- 5.5.7 正则迭代189
- 5.5.8 正则分词190
- 5.5.9 高级议题192
- 5.6 总结194
- 第 6 章正确性与测试197
- 6.1 assert197
- 6.1.1 基本用法197
- 6.1.2 禁用断言198
- 6.1.3 扩展用法199
- 6.2 static_assert 200
- 6.2.1 定义.201
- 6.2.2 用法.201
- 6.2.3 使用建议203
- 6.3 lightweight_test 203
- 6.3.1 测试断言203
- 6.3.2 用法.204
- 6.3.3 测试元编程205
- 6.4 test 205
- 6.4.1 最小化测试206
- 6.4.2 单元测试框架.207
- 6.4.3 测试断言208
- 6.4.4 测试主体209
- 6.4.5 测试实例210
- 6.4.6 测试夹具212
- 6.4.7 测试日志214
- 6.4.8 运行参数215
- 6.4.9 高级议题216
- 6.5 总结219
- 第 7 章容器与数据结构.221
- 7.1 array221
- 7.1.1 类摘要222
- 7.1.2 操作函数222
- 7.1.3 用法.223
- 7.1.4 能力限制224
- 7.1.5 初始化224
- 7.1.6 对比标准225
- 7.2 dynamic_bitset 225
- 7.2.1 类摘要226
- 7.2.2 创建与赋值227
- 7.2.3 容器操作228
- 7.2.4 基本运算229
- 7.2.5 访问元素230
- 7.2.6 类型转换231
- 7.2.7 集合操作232
- 7.2.8 综合运用233
- 7.3 unordered 234
- 7.3.1 散列集合简介.234
- 7.3.2 散列集合的用法236
- 7.3.3 散列映射简介.238
- 7.3.4 散列映射的用法239
- 7.3.5 高级议题241
- 7.4 bimap243
- 7.4.1 类摘要243
- 7.4.2 基本用法244
- 7.4.3 值的集合类型.245
- 7.4.4 集合类型的用法246
- 7.4.5 使用标签类型.247
- 7.4.6 使用assign 库.249
- 7.4.7 查找与替换249
- 7.4.8 投射.251
- 7.4.9 高级议题252
- 7.5 circular_buffer253
- 7.5.1 类摘要253
- 7.5.2 用法.254
- 7.5.3 环形结构255
- 7.5.4 空间优化256
- 7.6 tuple 257
- 7.6.1 二元组257
- 7.6.2 类摘要258
- 7.6.3 创建与赋值258
- 7.6.4 访问元素260
- 7.6.5 比较操作261
- 7.6.6 输入输出261
- 7.6.7 连结变量262
- 7.6.8 内部结构263
- 7.6.9 使用访问者模式264
- 7.6.10 高级议题266
- 7.7 any 269
- 7.7.1 类摘要269
- 7.7.2 访问元素270
- 7.7.3 用法.271
- 7.7.4 简化操作271
- 7.7.5 保存指针272
- 7.7.6 输出.273
- 7.7.7 高级议题275
- 7.8 variant276
- 7.8.1 类摘要276
- 7.8.2 访问元素277
- 7.8.3 用法.278
- 7.8.4 访问器279
- 7.8.5 高级议题281
- 7.9 multi_array.283
- 7.9.1 类摘要284
- 7.9.2 用法.285
- 7.9.3 改变形状和大小287
- 7.9.4 创建子视图287
- 7.9.5 适配普通数组.289
- 7.9.6 高级议题290
- 7.10 property_tree292
- 7.10.1 类摘要.293
- 7.10.2 读取配置信息294
- 7.10.3 写入配置信息296
- 7.10.4 更多用法297
- 7.10.5 数据格式298
- 7.10.6 高级议题300
- 7.11 总结.302
- 第8 章算法305
- 8.1 foreach305
- 8.1.1 用法.306
- 8.1.2 详细解说307
- 8.1.3 更优雅的名字.308
- 8.1.4 支持的序列类型308
- 8.1.5 存在的问题309
- 8.2 minmax.310
- 8.2.1 用法.310
- 8.2.2 存在的问题311
- 8.3 minmax_element 311
- 8.3.1 基本用法312
- 8.3.2 其他用法312
- 8.4 algorithm.313
- 8.4.1 clamp 313
- 8.4.2 clamp_range314
- 8.4.3 hex/unhex314
- 8.5 总结316
- 第 9 章数学与数字317
- 9.1 math.constants317
- 9.1.1 基本用法318
- 9.1.2 高级用法318
- 9.2 integer319
- 9.2.1 整数特征319
- 9.2.2 标准整数类型.320
- 9.2.3 整数类型模板类322
- 9.3 rational325
- 9.3.1 类摘要326
- 9.3.2 创建与赋值327
- 9.3.3 基本运算327
- 9.3.4 类型转换328
- 9.3.5 输入输出328
- 9.3.6 分子与分母328
- 9.3.7 其他议题329
- 9.4 ratio.330
- 9.4.1 类摘要330
- 9.4.2 用法.331
- 9.4.3 数字单位331
- 9.4.4 字符串表示333
- 9.5 crc 333
- 9.5.1 类摘要334
- 9.5.2 预定义的实现类334
- 9.5.3 用法.335
- 9.6 random336
- 9.6.1 随机数发生器.336
- 9.6.2 随机数分布器.338
- 9.6.3 变量发生器343
- 9.6.4 产生随机数据块344
- 9.6.5 真随机数发生器345
- 9.7 总结348
- 第 10 章操作系统相关349
- 10.1 system.349
- 10.1.1 错误值.350
- 10.1.2 错误类别350
- 10.1.3 错误代码352
- 10.1.4 错误异常354
- 10.2 chrono.354
- 10.2.1 时间长度355
- 10.2.2 使用时间长度356
- 10.2.3 时钟358
- 10.2.4 时间点.360
- 10.2.5 综合运用361
- 10.3 cpu_timer363
- 10.3.1 时间类型364
- 10.3.2 cpu_timer 364
- 10.3.4 auto_cpu_timer.366
- 10.3.5 定制输出格式367
- 10.4 filesystem.368
- 10.4.1 类摘要.368
- 10.4.2 路径表示.370
- 10.4.3 可移植的文件名.372
- 10.4.4 路径处理.372
- 10.4.5 异常处理.375
- 10.4.6 文件状态.376
- 10.4.7 文件属性.377
- 10.4.8 文件操作.378
- 10.4.9 迭代目录.379
- 10.4.10 实例1.382
- 10.4.11 实例2.383
- 10.4.12 实例3.385
- 10.4.13 文件流操作.386
- 10.5 program_options387
- 10.5.1 概述387
- 10.5.3 选项值.389
- 10.5.4 选项描述器391
- 10.5.5 选项描述器的用法392
- 10.5.6 分析器.394
- 10.5.7 存储器.395
- 10.5.8 位置选项值396
- 10.5.9 环境变量.398
- 10.5.10 分组选项信息399
- 10.5.11 高级用法401
- 10.6 总结.404
- 第 11 章函数与回调.405
- 11.1 ref405
- 11.1.1 类摘要.406
- 11.1.2 基本用法.407
- 11.1.3 工厂函数.407
- 11.1.4 操作包装.408
- 11.1.5 综合应用.409
- 11.1.6 对比标准.410
- 11.2 bind 411
- 11.2.1 工作原理411
- 11.2.2 绑定普通函数413
- 11.2.3 绑定成员函数414
- 11.2.4 绑定成员变量415
- 11.2.5 绑定函数对象416
- 11.2.6 对比标准416
- 11.2.7 高级议题417
- 11.3 function421
- 11.3.1 类摘要.421
- 11.3.2 声明形式422
- 11.3.3 操作函数423
- 11.3.4 用法424
- 11.3.5 使用ref 库.425
- 11.3.6 用于回调426
- 11.3.7 对比auto.428
- 11.3.8 对比std::function429
- 11.4 signals2429
- 11.4.1 类摘要.430
- 11.4.2 操作函数431
- 11.4.3 用法432
- 11.4.4 返回值.434
- 11.4.5 合并器.434
- 11.4.6 管理信号连接436
- 11.4.7 更灵活的管理信号连接437
- 11.4.8 自动管理连接439
- 11.4.9 应用于观察者模式441
- 11.4.10 高级议题444
- 11.5 总结.449
- 第 12 章并发编程451
- 12.1 atomic.451
- 12.1.1 类摘要.452
- 12.1.2 基本用法454
- 12.1.3 整数用法455
- 12.1.4 并发顺序一致性.456
- 12.2 thread458
- 12.2.1 mutex 459
- 12.2.2 lock_guard461
- 12.2.3 unique_lock 463
- 12.2.4 lock adapter 465
- 12.2.5 thread 467
- 12.2.6 使用线程.469
- 12.2.7 中断线程.472
- 12.2.8 thread_group475
- 12.2.9 call_once476
- 12.2.10 condition_variable 477
- 12.2.11 shared_mutex481
- 12.2.12 future483
- 12.2.13 shared_future 486
- 12.2.14 高级议题487
- 12.3 asio491
- 12.3.1 概述491
- 12.3.2 信号497
- 12.3.3 定时器.501
- 12.3.4 网络通信.507
- 12.3.5 同步通信.514
- 12.3.6 异步通信.516
- 12.3.7 解析网络地址521
- 12.3.8 使用协程.524
- 12.3.9 其他议题.526
- 12.4 总结.530
- 第 13 章组件速览533
- 13.1 算法.533
- 13.2 字符串和文本处理534
- 13.3 容器与数据结构.535
- 13.4 迭代器536
- 13.5 函数对象与高级编程.536
- 13.6 泛型编程.538
- 13.7 模板元编程539
- 13.8 预处理元编程540
- 13.9 并发编程.540
- 13.10 数学与数字.541
- 13.11 输入输出542
- 13.12 操作系统相关543
- 13.13 语言特性模拟543
- 13.14 杂项544
- 13.15 总结546
- 第 14 章设计模式547
- 14.1 创建型模式548
14.2 结构型模式549
14.3 行为模式.552
14.4 其他模式.555
14.5 总结.557
第 15 章结束语559
15.1 未臻完美.559
15.2 锦上添花.560
15.3 工夫在诗外563
15.4 临别赠言.564
附录A 推荐书目565
附录B 标准简述567
附录C 关键字浅谈. 571