第0 章導讀..................................................1
0.1 關於本書.........................................1
0.2 讀者對象.........................................1
0.3 術語與風格.....................................2
0.4 C++標準..........................................3
0.5 本書的結構.....................................4
0.6 如何閱讀本書..................................5
0.7 本書的源碼.....................................5
第1 章 Boost 程序庫總論...........................7
1.1 關於Boost .......................................7
1.1.1 獲取方式................................... 8
1.1.2 目錄結構................................... 8
1.1.3 使用方式................................... 9
1.2 開發環境.........................................9
1.2.1 操作係統和編譯器................. 10
1.2.2 快捷安裝Boost ....................... 10
1.2.3 完全安裝Boost ....................... 10
1.2.4 定製安裝Boost ....................... 11
1.2.5 驗證開發環境......................... 11
1.3 構建工具.......................................12
1.3.1 安裝b2 .................................... 12
1.3.2 構建腳本................................. 12
1.3.3 構建語言................................. 13
1.3.4 構建命令................................. 14
1.4 總結...............................................14
第2 章時間與日期.....................................15
2.1 timer 庫概述..................................15
2.2 timer...............................................16
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_display ............................20
2.4.1 類摘要..................................... 20
2.4.2 用法......................................... 21
2.4.3 注意事項................................. 22
2.5 date_time庫概述...........................23
2.5.1 編譯與使用............................. 24
2.5.2 基本概念................................. 24
2.6 處理日期.......................................25
2.6.1 日期......................................... 25
2.6.2 創建日期對象......................... 26
2.6.3 訪問日期................................. 27
2.6.4 日期的輸齣............................. 28
2.6.5 轉換tm 結構........................... 29
2.6.6 日期長度................................. 29
2.6.7 日期運算................................. 31
2.6.8 日期區間................................. 32
2.6.9 日期區間運算......................... 33
2.6.10 日期迭代器........................... 35
2.6.11 其他功能............................... 36
2.6.12 綜閤運用............................... 36
2.7 處理時間.......................................39
2.7.1 時間長度................................. 39
2.7.2 操作時間長度......................... 40
2.7.3 時間長度的精確度................. 42
2.7.4 時間點..................................... 43
2.7.5 創建時間點對象..................... 44
2.7.6 操作時間點對象..................... 45
2.7.7 轉換tm/time_t結構................ 46
2.7.8 時間區間................................. 46
2.7.9 時間迭代器............................. 47
2.7.10 綜閤運用............................... 47
2.8 date_time庫的高級議題...............50
2.8.1 編譯配置宏............................. 50
2.8.2 自定義字麵值......................... 51
2.8.3 格式化時間............................. 51
2.8.4 本地時間................................. 52
2.8.5 序列化..................................... 54
2.9 總結...............................................54
第3 章內存管理.........................................57
3.1 smart_ptr庫概述...........................57
3.1.1 RAII 機製................................ 57
3.1.2 智能指針................................. 58
3.2 scoped_ptr......................................59
3.2.1 類摘要..................................... 59
3.2.2 操作函數................................. 60
3.2.3 用法......................................... 61
3.2.4 對比unique_ptr....................... 63
3.2.5 make_unique............................ 64
3.3 scoped_array ..................................65
3.3.1 類摘要..................................... 65
3.3.2 用法......................................... 66
3.3.3 對比unique_ptr....................... 66
3.3.4 使用建議................................. 67
3.4 shared_ptr.......................................68
3.4.1 類摘要..................................... 68
3.4.2 操作函數................................. 69
3.4.3 用法......................................... 70
3.4.4 工廠函數................................. 72
3.4.5 應用於標準容器..................... 73
3.4.6 應用於橋接模式..................... 74
3.4.7 應用於工廠模式..................... 75
3.4.8 定製刪除器............................. 77
3.4.9 高級議題................................. 78
3.5 shared_array...................................82
3.5.1 類摘要..................................... 82
3.5.2 用法......................................... 82
3.6 weak_ptr.........................................83
3.6.1 類摘要..................................... 83
3.6.2 用法......................................... 84
3.6.3 enable_shared_from_this......... 85
3.6.4 enable_shared_from_raw......... 86
3.6.5 打破循環引用......................... 88
3.7 intrusive_ptr ...................................89
3.7.1 類摘要..................................... 89
3.7.2 用法......................................... 90
3.7.3 引用計數器............................. 91
3.8 pool 庫概述...................................92
3.9 pool ................................................93
3.9.1 類摘要..................................... 93
3.9.2 操作函數................................. 94
3.9.3 用法......................................... 95
3.10 object_pool...................................95
3.10.1 類摘要................................... 96
3.10.2 操作函數............................... 96
3.10.3 用法....................................... 97
3.10.4 使用更多的構造參數............ 97
3.11 singleton_pool..............................99
3.11.1 類摘要................................... 99
3.11.2 用法....................................... 99
3.12 pool_alloc...................................100
3.13 總結...........................................101
第4 章實用工具.......................................103
4.1 noncopyable .................................103
4.1.1 原理....................................... 104
4.1.2 用法....................................... 104
4.1.3 實現....................................... 105
4.2 ignore_unused..............................106
4.2.1 基本用法............................... 106
4.2.2 模闆用法............................... 107
4.3 optional ........................................108
4.3.1 類摘要................................... 108
4.3.2 操作函數............................... 109
4.3.3 用法....................................... 111
4.3.4 工廠函數............................... 112
4.4 assign ........................................... 113
4.4.1 list_inserter ............................ 113
4.4.2 使用operator+=..................... 114
4.4.3 使用operator () ..................... 115
4.4.4 generic_list............................. 116
4.4.5 初始化容器........................... 117
4.4.6 減少重復輸入....................... 119
4.4.7 操作非標準容器................... 120
4.4.8 其他議題............................... 121
4.5 swap .............................................122
4.5.1 原理....................................... 122
4.5.2 交換數組............................... 123
4.5.3 特化std::swap ....................... 124
4.5.4 特化ADL 可找到的swap.... 125
4.5.5 使用建議............................... 126
4.6 singleton.......................................126
4.6.1 類摘要................................... 126
4.6.2 用法....................................... 127
4.7 tribool...........................................128
4.7.1 類摘要................................... 129
4.7.2 用法....................................... 130
4.7.3 為第三態更名....................... 131
4.7.4 輸入/輸齣.............................. 131
4.7.5 與optional<bool>的區彆...... 132
4.8 operators.......................................133
4.8.1 基本運算概念....................... 134
4.8.2 算術操作符的用法............... 135
4.8.3 基類鏈................................... 137
4.8.4 復閤運算概念....................... 138
4.8.5 相等與等價........................... 140
4.8.6 解引用操作符....................... 141
4.8.7 下標操作符........................... 142
4.8.8 bool轉型操作符................... 143
4.8.9 二元操作符........................... 145
4.9 exception......................................145
4.9.1 標準庫中的異常................... 146
4.9.2 類摘要................................... 146
4.9.3 嚮異常傳遞信息................... 148
4.9.4 錯誤信息類........................... 149
4.9.5 包裝標準異常....................... 151
4.9.6 使用函數拋齣異常............... 152
4.9.7 獲得更多的調試信息........... 152
4.9.8 高級議題............................... 154
4.10 uuid ............................................155
4.10.1 類摘要................................. 156
4.10.2 用法..................................... 157
4.10.3 生成器................................. 158
4.10.4 增強的uuid類.................... 160
4.10.5 轉換字符串......................... 162
4.10.6 SHA1 摘要算法.................. 163
4.11 config .........................................164
4.11.1 BOOST_STRINGIZE.......... 164
4.11.2 BOOST_STATIC_
CONSTANT........................ 165
4.12 utility..........................................165
4.12.1 BOOST_BINARY ............... 165
4.12.2 BOOST_CURRENT_
FUNCTION......................... 167
4.13 總結...........................................168
第5 章字符串與文本處理.......................171
5.1 lexical_cast...................................171
5.1.1 函數聲明............................... 172
5.1.2 用法....................................... 172
5.1.3 錯誤處理............................... 173
5.1.4 對轉換對象的要求............... 174
5.1.5 應用於自定義類................... 175
5.1.6 對比C++11 標準.................. 176
5.2 format...........................................177
5.2.1 簡單的例子........................... 178
5.2.2 輸入操作符%........................ 179
5.2.3 類摘要................................... 180
5.2.4 格式化語法........................... 182
5.2.5 format 的性能........................ 183
5.2.6 高級用法............................... 183
5.3 string_ref......................................184
5.3.1 類摘要................................... 185
5.3.2 用法....................................... 186
5.4 string_algo ...................................188
5.4.1 簡單的例子........................... 188
5.4.2 string_algo概述.................... 189
5.4.3 大小寫轉換........................... 190
5.4.4 判斷式(算法) ................... 191
5.4.5 判斷式(函數對象) ........... 193
5.4.6 分類....................................... 193
5.4.7 修剪....................................... 194
5.4.8 查找....................................... 195
5.4.9 替換與刪除........................... 197
5.4.10 分割..................................... 199
5.4.11 閤並..................................... 200
5.4.12 查找(分割)迭代器......... 201
5.5 tokenizer.......................................203
5.5.1 類摘要................................... 203
5.5.2 用法....................................... 204
5.5.3 分詞函數對象....................... 204
5.5.4 char_separator........................ 205
5.5.5 escaped_list_separator ........... 206
5.5.6 offset_separator ..................... 207
5.5.7 tokenizer庫的缺陷............... 208
5.6 xpressive ......................................210
5.6.1 兩種使用方式....................... 210
5.6.2 正則錶達式語法簡介........... 211
5.6.3 類摘要................................... 212
5.6.4 正則匹配............................... 214
5.6.5 正則查找............................... 217
5.6.6 正則替換............................... 218
5.6.7 正則迭代............................... 219
5.6.8 正則分詞............................... 221
5.6.9 對比boost.regex.................... 222
5.6.10 高級議題............................. 223
5.7 總結.............................................225
第6 章正確性與測試...............................227
6.1 assert ............................................227
6.1.1 基本用法............................... 227
6.1.2 禁用斷言............................... 229
6.1.3 擴展用法............................... 229
6.2 static_assert..................................231
6.2.1 定義....................................... 231
6.2.2 用法....................................... 231
6.2.3 使用建議............................... 233
6.3 lightweight_test............................233
6.3.1 測試斷言............................... 233
6.3.2 用法....................................... 234
6.3.3 測試元編程........................... 235
6.4 test................................................235
6.4.1 最小化的測試套件............... 236
6.4.2 單元測試框架簡介............... 237
6.4.3 測試斷言............................... 238
6.4.4 測試用例與測試套件............ 239
6.4.5 測試實例............................... 240
6.4.6 測試夾具............................... 242
6.4.7 測試日誌............................... 244
6.4.8 運行參數............................... 245
6.4.9 函數執行監視器................... 246
6.4.10 程序執行監視器................. 249
6.4.11 高級議題............................. 249
6.5 總結.............................................251
第7 章容器與數據結構...........................253
7.1 array .............................................253
7.1.1 類摘要................................... 254
7.1.2 操作函數............................... 254
7.1.3 用法....................................... 255
7.1.4 能力限製............................... 256
7.1.5 初始化................................... 257
7.1.6 零長度的數組....................... 257
7.1.7 對比C++11 標準.................. 258
7.2 dynamic_bitset .............................258
7.2.1 類摘要................................... 259
7.2.2 創建與賦值........................... 260
7.2.3 容器操作............................... 261
7.2.4 位運算與比較運算............... 262
7.2.5 訪問元素............................... 263
7.2.6 類型轉換............................... 264
7.2.7 集閤操作............................... 265
7.2.8 綜閤運用............................... 265
7.3 unordered .....................................267
7.3.1 散列集閤簡介....................... 267
7.3.2 散列集閤的用法................... 269
7.3.3 散列映射簡介....................... 271
7.3.4 散列映射的用法................... 272
7.3.5 高級議題............................... 274
7.4 bimap ...........................................276
7.4.1 類摘要................................... 276
7.4.2 基本用法............................... 277
7.4.3 值的集閤類型....................... 278
7.4.4 集閤類型的用法................... 279
7.4.5 使用標簽類型....................... 281
7.4.6 使用assign 庫....................... 282
7.4.7 查找與替換........................... 283
7.4.8 投射....................................... 285
7.4.9 高級議題............................... 285
7.5 circular_buffer..............................286
7.5.1 類摘要................................... 287
7.5.2 用法....................................... 288
7.5.3 環形緩衝區........................... 288
7.5.4 空間優化型緩衝區............... 290
7.6 tuple .............................................290
7.6.1 最簡單的tuple:pair............... 291
7.6.2 類摘要................................... 292
7.6.3 創建與賦值........................... 292
7.6.4 訪問元素............................... 293
7.6.5 比較操作............................... 295
7.6.6 輸入輸齣............................... 295
7.6.7 聯結變量............................... 296
7.6.8 應用於assign 庫................... 297
7.6.9 應用於exception 庫.............. 298
7.6.10 內部結構............................. 298
7.6.11 使用訪問者模式................. 299
7.6.12 高級議題............................. 301
7.7 any................................................303
7.7.1 類摘要................................... 303
7.7.2 訪問元素............................... 304
7.7.3 用法....................................... 305
7.7.4 簡化的操作函數................... 306
7.7.5 保存指針............................... 307
7.7.6 輸齣....................................... 308
7.7.7 應用於容器........................... 309
7.8 variant ..........................................310
7.8.1 類摘要................................... 310
7.8.2 訪問元素............................... 311
7.8.3 用法....................................... 312
7.8.4 訪問器................................... 313
7.8.5 與any 的區彆........................ 315
7.8.6 高級議題............................... 316
7.9 multi_array...................................317
7.9.1 類摘要................................... 318
7.9.2 用法....................................... 319
7.9.3 改變形狀和大小................... 321
7.9.4 創建子視圖........................... 321
7.9.5 適配普通數組....................... 323
7.9.6 高級議題............................... 324
7.10 property_tree..............................326
7.10.1 類摘要................................. 327
7.10.2 讀取配置信息..................... 328
7.10.3 寫入配置信息..................... 330
7.10.4 更多用法............................. 331
7.10.5 XML 數據格式.................... 332
7.10.6 其他數據格式..................... 333
7.10.7 高級議題............................. 335
7.11 總結............................................336
第8 章算法..............................................339
8.1 foreach .........................................339
8.1.1 用法....................................... 340
8.1.2 詳細解說............................... 341
8.1.3 更優雅的名字....................... 342
8.1.4 支持的序列類型................... 343
8.1.5 存在的問題........................... 344
8.2 minmax ........................................344
8.2.1 用法....................................... 345
8.2.2 存在的問題........................... 345
8.3 minmax_element..........................346
8.3.1 用法....................................... 346
8.3.2 其他函數的用法................... 347
8.4 algorithm......................................348
8.4.1 clamp ..................................... 348
8.4.2 clamp_range .......................... 349
8.4.3 hex 和unhex ......................... 349
8.5 總結.............................................350
第9 章數學與數字...................................353
9.1 math.constants..............................353
9.1.1 基本用法............................... 354
9.1.2 高級用法............................... 355
9.2 integer ..........................................355
9.2.1 integer_traits.......................... 355
9.2.2 標準整數類型....................... 357
9.2.3 整數類型模闆類................... 359
9.3 rational .........................................362
9.3.1 類摘要................................... 362
9.3.2 創建與賦值........................... 363
9.3.3 算術運算與比較運算........... 364
9.3.4 類型轉換............................... 365
9.3.5 輸入輸齣............................... 365
9.3.6 分子與分母........................... 365
9.3.7 與數學函數配閤工作............ 366
9.3.8 rational 的精確度.................. 366
9.3.9 最大公約數和最小公倍數.... 366
9.4 ratio ..............................................367
9.4.1 類摘要................................... 367
9.4.2 用法....................................... 368
9.4.3 數字單位............................... 369
9.4.4 字符串錶示........................... 371
9.4.5 對比C++11 標準.................. 372
9.5 crc ................................................372
9.5.1 類摘要................................... 372
9.5.2 預定義的實現類................... 373
9.5.3 用法....................................... 373
9.6 random.........................................375
9.6.1 隨機數發生器....................... 375
9.6.2 隨機數發生器的拷貝............ 377
9.6.3 隨機數分布器....................... 377
9.6.4 隨機數分布器類摘要............ 378
9.6.5 隨機數分布器用法............... 381
9.6.6 變量發生器........................... 382
9.6.7 産生隨機數據塊................... 383
9.6.8 真隨機數發生器................... 384
9.6.9 實現真隨機數發生器............ 385
9.7 總結.............................................387
第10 章操作係統相關............................389
10.1 system ........................................389
10.1.1 錯誤值枚舉......................... 390
10.1.2 錯誤類彆............................. 390
10.1.3 錯誤代碼............................. 392
10.1.4 錯誤異常............................. 394
10.2 chrono ........................................395
10.2.1 時間長度............................. 395
10.2.2 使用時間長度..................... 396
10.2.3 時鍾..................................... 398
10.2.4 時間點................................. 400
10.2.5 綜閤運用............................. 402
10.3 cpu_timer ...................................404
10.3.1 時間類型............................. 404
10.3.2 cpu_timer............................. 405
10.3.3 auto_cpu_timer .................... 406
10.3.4 定製輸齣格式..................... 407
10.4 filesystem ...................................408
10.4.1 類摘要................................. 409
10.4.2 路徑錶示............................. 411
10.4.3 可移植的文件名................. 412
10.4.4 路徑處理............................. 413
10.4.5 異常處理............................. 415
10.4.6 文件狀態............................. 416
10.4.7 文件屬性............................. 418
10.4.8 文件操作............................. 419
10.4.9 迭代目錄............................. 420
10.4.10 實例1:實現查找
文件功能........................... 423
10.4.11 實例2:實現模糊查找
文件功能........................... 424
10.4.12 實例3:實現拷貝
目錄功能........................... 426
10.4.13 文件流操作....................... 427
10.5 program_options ........................428
10.5.1 概述..................................... 429
10.5.2 選項值................................. 431
10.5.3 選項描述器......................... 432
10.5.4 選項描述器的用法............. 433
10.5.5 分析器................................. 435
10.5.6 存儲器................................. 436
10.5.7 使用位置選項值................. 437
10.5.8 分析環境變量..................... 439
10.5.9 分組選項信息..................... 440
10.5.10 高級用法........................... 442
10.6 總結...........................................445
第11 章函數與迴調................................447
11.1 ref ...............................................447
11.1.1 類摘要................................. 448
11.1.2 基本用法............................. 449
11.1.3 工廠函數............................. 450
11.1.4 操作包裝............................. 450
11.1.5 綜閤應用............................. 451
11.1.6 對比C++11 標準................ 452
11.2 bind ............................................453
11.2.1 工作原理............................. 454
11.2.2 綁定普通函數..................... 455
11.2.3 綁定成員函數..................... 456
11.2.4 綁定成員變量..................... 458
11.2.5 綁定函數對象..................... 458
11.2.6 使用ref 庫........................... 459
11.2.7 對比C++11 標準................ 460
11.2.8 高級議題............................. 460
11.3 function ......................................463
11.3.1 類摘要................................. 464
11.3.2 function 的聲明................... 465
11.3.3 操作函數............................. 465
11.3.4 比較操作............................. 466
11.3.5 用法..................................... 466
11.3.6 使用ref 庫........................... 468
11.3.7 用於迴調............................. 469
11.3.8 對比C++11 的auto ............ 471
11.3.9 對比std::function ................ 472
11.4 signals2 ......................................472
11.4.1 類摘要................................. 473
11.4.2 操作函數............................. 474
11.4.3 插槽的連接與調用.............. 475
11.4.4 信號的返迴值..................... 477
11.4.5 閤並器................................. 477
11.4.6 管理信號的連接................. 479
11.4.7 更靈活的管理信號連接..... 480
11.4.8 自動連接管理..................... 483
11.4.9 應用於觀察者模式............. 485
11.4.10 高級議題........................... 488
11.5 總結............................................492
第12 章並發編程....................................495
12.1 atomic.........................................495
12.1.1 類摘要................................. 496
12.1.2 基本用法............................. 498
12.1.3 整數atomic 的用法............ 499
12.1.4 並發順序一緻性................. 500
12.2 thread .........................................503
12.2.1 mutex................................... 503
12.2.2 lock_guard ........................... 506
12.2.3 unique_lock ......................... 507
12.2.4 lock 適配器......................... 510
12.2.5 lockable 概念檢查類........... 512
12.2.6 lock 函數............................. 512
12.2.7 thread................................... 513
12.2.8 使用綫程............................. 515
12.2.9 中斷綫程............................. 518
12.2.10 thread_group...................... 521
12.2.11 call_once............................ 522
12.2.12 條件變量........................... 523
12.2.13 shared_mutex..................... 527
12.2.14 future ................................. 529
12.2.15 shared_future ..................... 533
12.2.16 高級議題........................... 534
12.3 asio.............................................536
12.3.1 概述..................................... 537
12.3.2 UNIX 信號.......................... 543
12.3.3 定時器................................. 549
12.3.4 網絡通信概述..................... 554
12.3.5 同步TCP 通信.................... 560
12.3.6 異步TCP 通信.................... 562
12.3.7 解析網絡地址..................... 568
12.3.8 協程..................................... 570
12.3.9 其他議題............................. 573
12.4 總結...........................................577
第13 章 Boost 組件速覽.........................579
13.1 算法...........................................579
13.2 字符串和文本處理....................580
13.3 容器與數據結構........................580
13.4 迭代器.......................................581
13.5 函數對象與高級編程................582
13.6 泛型編程...................................583
13.7 模闆元編程................................585
13.8 預處理元編程............................585
13.9 並發編程...................................586
13.10 數學與數字..............................587
13.11 TR1 實現..................................588
13.12 輸入輸齣.................................588
13.13 C++11 特性模擬實現..............588
13.14 雜項.........................................589
13.15 總結.........................................591
第14 章 Boost 與設計模式.....................593
14.1 創建型模式...............................594
14.2 結構型模式...............................595
14.3 行為模式...................................598
14.4 其他模式...................................601
14.5 總結...........................................603
第15 章結束語........................................605
15.1 未臻完美的Boost .....................605
15.2 讓Boost 工作得更好................606
15.3 工夫在詩外...............................608
15.4 臨彆贈言...................................610
附錄A 推薦書目.......................................611
附錄B C++標準簡述................................613
附錄C C++關鍵字淺談...........................617
· · · · · · (
收起)