第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.2.4 使用STLport 10
1.3 開發環境簡介 11
1.4 開發環境搭建 12
1.4.1 UNIX開發環境 12
1.4.2 Windows開發環境 13
1.4.3 高級議題 14
1.5 總結 16
第2章 時間與日期 17
2.1 timer庫概述 17
2.2 timer 18
2.2.1 用法 18
2.2.2 類摘要 19
2.2.3 使用建議 20
2.3 progress_timer 20
2.3.1 用法 20
2.3.2 類摘要 21
2.3.3 擴展計時精度 22
2.4 progress_display 24
2.4.1 類摘要 24
2.4.2 用法 25
2.4.3 注意事項 26
2.5 date_time庫概述 27
2.5.1 編譯date_time庫 28
2.5.2 date_time庫的基本概念 29
2.6 處理日期 29
2.6.1 日期 30
2.6.2 創建日期對象 30
2.6.3 訪問日期 32
2.6.4 日期的輸齣 33
2.6.5 與tm結構的轉換 34
2.6.6 日期長度 34
2.6.7 日期運算 35
2.6.8 日期區間 37
2.6.9 日期區間運算 38
2.6.10 日期迭代器 40
2.6.11 其他功能 41
2.6.12 綜閤運用 41
2.7 處理時間 44
2.7.1 時間長度 44
2.7.2 操作時間長度 45
2.7.3 時間長度的精確度 47
2.7.4 時間點 48
2.7.5 創建時間點對象 49
2.7.6 操作時間點對象 50
2.7.7 與tm、time_t等結構
的轉換 51
2.7.8 時間區間 51
2.7.9 時間迭代器 52
2.7.10 綜閤運用 52
2.8 date_time庫的高級議題 56
2.8.1 編譯配置宏 56
2.8.2 格式化時間 56
2.8.3 本地時間 57
2.8.4 序列化 59
2.9 總結 59
第3章 內存管理 61
3.1 smart_ptr庫概述 61
3.1.1 RAII機製 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.2.5 與unique_ptr的區彆 67
3.3 scoped_array 69
3.3.1 類摘要 69
3.3.2 用法 69
3.3.3 與unique_ptr的區彆 70
3.3.4 使用建議 71
3.4 shared_ptr 72
3.4.1 類摘要 72
3.4.2 操作函數 73
3.4.3 用法 75
3.4.4 工廠函數 76
3.4.5 應用於標準容器 77
3.4.6 應用於橋接模式 79
3.4.7 應用於工廠模式 80
3.4.8 定製刪除器 81
3.4.9 高級議題 83
3.5 shared_array 84
3.5.1 類摘要 84
3.5.2 用法 84
3.6 weak_ptr 85
3.6.1 類摘要 85
3.6.2 用法 86
3.6.3 獲得this的shared_ptr 87
3.6.4 打破循環引用 88
3.7 intrusive_ptr 89
3.8 pool庫概述 89
3.9 pool 90
3.9.1 類摘要 90
3.9.2 操作函數 91
3.9.3 用法 91
3.10 object_pool 92
3.10.1 類摘要 92
3.10.2 操作函數 93
3.10.3 用法 93
3.10.4 使用更多的構造參數 94
3.11 singleton_pool 95
3.11.1 類摘要 96
3.11.2 用法 96
3.12 pool_alloc 97
3.13 總結 98
第4章 實用工具 101
4.1 noncopyable 101
4.1.1 原理 102
4.1.2 用法 102
4.1.3 原理 103
4.2 typeof 104
4.2.1 動機 104
4.2.2 用法 106
4.2.3 嚮typeof庫注冊自定義類 107
4.2.4 使用建議 108
4.3 optional 108
4.3.1 “無意義”的值 108
4.3.2 類摘要 109
4.3.3 操作函數 109
4.3.4 用法 110
4.3.5 工廠函數 111
4.3.6 高級議題 112
4.4 assign 113
4.4.1 使用操作符+=嚮容器
增加元素 113
4.4.2 使用操作符()嚮容器
增加元素 114
4.4.3 初始化容器元素 115
4.4.4 減少重復輸入 117
4.4.5 搭配非標準容器工作 118
4.4.6 高級用法 120
4.5 swap 121
4.5.1 原理 121
4.5.2 交換數組 122
4.5.3 特化std::swap 122
4.5.4 特化ADL可找到的swap 123
4.5.5 使用建議 124
4.6 singleton 124
4.6.1 boost.pool的單件實現 125
4.6.2 boost.serialzation的
單件實現 127
4.7 tribool 129
4.7.1 類摘要 129
4.7.2 用法 130
4.7.3 為第三態更名 131
4.7.4 輸入/輸齣 132
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 高級議題 143
4.9 exception 144
4.9.1 標準庫中的異常 145
4.9.2 類摘要 146
4.9.3 嚮異常傳遞信息 147
4.9.4 更進一步的用法 148
4.9.5 包裝標準異常 150
4.9.6 使用函數拋齣異常 151
4.9.7 獲得更多的調試信息 152
4.9.8 高級議題 153
4.10 uuid 155
4.10.1 類摘要 155
4.10.2 用法 156
4.10.3 生成器 158
4.10.4 增強的uuid類 160
4.10.5 與字符串的轉換 161
4.10.6 SHA1摘要算法 162
4.11 config 163
4.11.1 BOOST_STRINGIZE 163
4.11.2 BOOST_STATIC_
CONSTANT 164
4.11.3 其他工具 165
4.12 utility 165
4.12.1 BOOST_BINARY 165
4.12.2 BOOST_CURRENT_
FUNCTION 166
4.13 總結 167
第5章 字符串與文本處理 171
5.1 lexical_cast 171
5.1.1 用法 172
5.1.2 異常bad_lexical_cast 173
5.1.3 對轉換對象的要求 174
5.1.4 應用於自己的類 174
5.2 format 175
5.2.1 簡單的例子 176
5.2.2 輸入操作符% 177
5.2.3 類摘要 179
5.2.4 格式化語法 180
5.2.5 format的性能 181
5.2.6 高級用法 181
5.3 string_algo 182
5.3.1 簡單的例子 183
5.3.2 string_algo概述 184
5.3.3 大小寫轉換 185
5.3.4 判斷式(算法) 185
5.3.5 判斷式(函數對象) 187
5.3.6 分類 188
5.3.7 修剪 189
5.3.8 查找 190
5.3.9 替換與刪除 191
5.3.10 分割 193
5.3.11 閤並 195
5.3.12 查找(分割)迭代器 196
5.4 tokenizer 197
5.4.1 類摘要 197
5.4.2 用法 198
5.4.3 分詞函數對象 199
5.4.4 char_separator 199
5.4.5 escaped_list_separator 201
5.4.6 offset_separator 201
5.4.7 tokenizer庫的缺陷 202
5.5 xpressive 204
5.5.1 兩種使用方式 204
5.5.2 正則錶達式語法簡介 205
5.5.3 類摘要 206
5.5.4 匹配 208
5.5.5 查找 211
5.5.6 替換 212
5.5.7 迭代 213
5.5.8 分詞 215
5.5.9 與regex的區彆 216
5.5.10 高級議題 217
5.6 總結 219
第6章 正確性與測試 221
6.1 assert 221
6.1.1 基本用法 221
6.1.2 禁用斷言 222
6.1.3 擴展用法 223
6.1.4 BOOST_ASSERT_MSG 224
6.1.5 BOOST_VERIFY 225
6.2 static_assert 225
6.2.1 定義 226
6.2.2 用法 226
6.2.3 使用建議 228
6.3 test 228
6.3.1 編譯test庫 228
6.3.2 最小化的測試套件 229
6.3.3 單元測試框架簡介 231
6.3.4 測試斷言 231
6.3.5 測試用例與套件 232
6.3.6 測試實例 234
6.3.7 測試夾具 235
6.3.8 測試日誌 237
6.3.9 運行參數 238
6.3.10 函數執行監視器 239
6.3.11 程序執行監視器 242
6.3.12 高級議題 242
6.4 總結 245
第7章 容器與數據結構 247
7.1 array 247
7.1.1 類摘要 248
7.1.2 操作函數 248
7.1.3 用法 249
7.1.4 能力限製 250
7.1.5 初始化 251
7.1.6 零長度的數組 251
7.1.7 與C++11標準的區彆 252
7.1.8 實現ref_array 252
7.1.9 ref_array的用法 254
7.2 dynamic_bitset 254
7.2.1 類摘要 255
7.2.2 創建與賦值 256
7.2.3 容器操作 257
7.2.4 位運算與比較運算 258
7.2.5 訪問元素 259
7.2.6 類型轉換 260
7.2.7 集閤操作 261
7.2.8 綜閤運用 261
7.3 unordered 263
7.3.1 散列集閤簡介 263
7.3.2 散列集閤的用法 265
7.3.3 散列映射簡介 267
7.3.4 散列映射的用法 269
7.3.5 高級議題 271
7.4 bimap 272
7.4.1 類摘要 273
7.4.2 基本用法 273
7.4.3 值的集閤類型 275
7.4.4 集閤類型的用法 276
7.4.5 使用標簽類型 277
7.4.6 使用assign庫 279
7.4.7 查找與替換 279
7.4.8 投射 281
7.4.9 高級議題 282
7.5 circular_buffer 283
7.5.1 類摘要 283
7.5.2 用法 284
7.5.3 環形緩衝區 285
7.5.4 空間優化型緩衝區 286
7.6 tuple 287
7.6.1 最簡單的tuple:pair 287
7.6.2 類摘要 288
7.6.3 創建與賦值 288
7.6.4 訪問元素 290
7.6.5 比較操作 291
7.6.6 輸入輸齣 292
7.6.7 連結變量 293
7.6.8 應用於assign庫 293
7.6.9 應用於exception庫 294
7.6.10 內部結構 294
7.6.11 使用訪問者模式 295
7.6.12 高級議題 297
7.7 any 299
7.7.1 類摘要 299
7.7.2 訪問元素 300
7.7.3 用法 301
7.7.4 簡化的操作函數 302
7.7.5 保存指針 303
7.7.6 輸齣 304
7.7.7 應用於容器 306
7.8 variant 306
7.8.1 類摘要 307
7.8.2 訪問元素 308
7.8.3 用法 308
7.8.4 訪問器 309
7.8.5 與any的區彆 312
7.8.6 高級議題 312
7.9 multi_array 314
7.9.1 類摘要 314
7.9.2 用法 316
7.9.3 多維數組生成器 318
7.9.4 改變形狀和大小 319
7.9.5 創建子視圖 320
7.9.6 適配普通數組 322
7.9.7 高級議題 323
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 345
8.2.1 用法 345
8.2.2 使用tuples::tie 346
8.3 minmax_element 347
8.3.1 用法 347
8.3.2 其他函數的用法 348
8.4 總結 349
第9章 數學與數字 351
9.1 integer 351
9.1.1 integer_traits 351
9.1.2 標準整數類型 353
9.1.3 整數類型模闆類 355
9.2 rational 358
9.2.1 類摘要 358
9.2.2 創建與賦值 359
9.2.3 算術運算與比較運算 360
9.2.4 類型轉換 360
9.2.5 輸入輸齣 361
9.2.6 分子與分母 361
9.2.7 與數學函數配閤工作 361
9.2.8 異常 361
9.2.9 rational的精度 362
9.2.10 實現無限精度的
整數類型 362
9.2.11 最大公約數和最小
公倍數 367
9.3 crc 367
9.3.1 類摘要 368
9.3.2 預定義的實現類 368
9.3.3 計算CRC 369
9.3.4 CRC函數 370
9.3.5 自定義CRC函數 371
9.4 random 371
9.4.1 僞隨機數發生器 372
9.4.2 僞隨機數發生器的構造 373
9.4.3 僞隨機數發生器的拷貝 374
9.4.4 隨機數分布器 375
9.4.5 隨機數分布器類摘要 376
9.4.6 隨機數分布器用法 379
9.4.7 變量發生器 379
9.4.8 産生隨機數據塊 381
9.4.9 真隨機數發生器 382
9.4.10 實現真隨機數發生器 383
9.5 總結 384
第10章 操作係統相關 387
10.1 io_state_savers 387
10.1.1 類摘要 388
10.1.2 用法 388
10.1.3 簡化new_progress_timer 390
10.2 system 390
10.2.1 編譯system庫 391
10.2.2 錯誤值枚舉 391
10.2.3 錯誤類彆 392
10.2.4 錯誤代碼 393
10.2.5 錯誤異常 395
10.3 cpu_timer 396
10.3.1 編譯cpu_timer庫 396
10.3.2 時間類型 397
10.3.3 cpu_timer 398
10.3.4 auto_cpu_timer 400
10.3.5 定製輸齣格式 401
10.4 filesystem 402
10.4.1 編譯filesystem庫 402
10.4.2 類摘要 403
10.4.3 路徑錶示 405
10.4.4 可移植的文件名 406
10.4.5 路徑處理 407
10.4.6 異常 409
10.4.7 文件狀態 410
10.4.8 文件屬性 412
10.4.9 文件操作 413
10.4.10 迭代目錄 414
10.4.11 實例1:實現查找
文件功能 417
10.4.12 實例2:實現模糊查找
文件功能 418
10.4.13 實例3:實現拷貝
目錄功能 420
10.4.14 文件流操作 422
10.5 program_options 422
10.5.1 編譯program_options庫 423
10.5.2 概述 424
10.5.3 選項值 426
10.5.4 選項描述器 427
10.5.5 選項描述器的用法 428
10.5.6 分析器 430
10.5.7 存儲器 432
10.5.8 使用位置選項值 432
10.5.9 分析環境變量 434
10.5.10 分組選項信息 435
10.5.11 高級用法 437
10.6 總結 440
第11章 函數與迴調 443
11.1 result_of 443
11.1.1 原理 444
11.1.2 用法 444
11.2 ref 446
11.2.1 類摘要 447
11.2.2 基本用法 447
11.2.3 工廠函數 448
11.2.4 操作包裝 449
11.2.5 綜閤應用 450
11.2.6 為ref增加函數調用功能 451
11.3 bind 453
11.3.1 工作原理 453
11.3.2 綁定普通函數 454
11.3.3 綁定成員函數 455
11.3.4 綁定成員變量 457
11.3.5 綁定函數對象 457
11.3.6 使用ref庫 458
11.3.7 高級議題 459
11.4 function 461
11.4.1 類摘要 462
11.4.2 function的聲明 462
11.4.3 操作函數 463
11.4.4 比較操作 464
11.4.5 用法 464
11.4.6 使用ref庫 465
11.4.7 用於迴調 467
11.4.8 與typeof的區彆 469
11.5 signals2 469
11.5.1 類摘要 470
11.5.2 操作函數 471
11.5.3 插槽的連接與調用 472
11.5.4 信號的返迴值 474
11.5.5 閤並器 474
11.5.6 管理信號的連接 476
11.5.7 更靈活的管理信號連接 477
11.5.8 自動連接管理 480
11.5.9 應用於觀察者模式 482
11.5.10 高級議題 485
11.6 總結 489
第12章 並發編程 491
12.1 thread 491
12.1.1 編譯thread庫 492
12.1.2 時間功能 493
12.1.3 互斥量 493
12.1.4 綫程對象 496
12.1.5 創建綫程 497
12.1.6 操作綫程 499
12.1.7 中斷綫程 500
12.1.8 綫程組 504
12.1.9 條件變量 505
12.1.10 共享互斥量 508
12.1.11 future 510
12.1.12 高級議題 513
12.2 asio 518
12.2.1 概述 519
12.2.2 定時器 520
12.2.3 定時器用法 521
12.2.4 網絡通信簡述 524
12.2.5 IP地址和端點 525
12.2.6 同步socket處理 526
12.2.7 異步socket處理 528
12.2.8 查詢網絡地址 532
12.2.9 高級議題 533
12.3 總結 537
第13章 編程語言支持 539
13.1 python庫概述 539
13.1.1 Python語言簡介 540
13.1.2 安裝Python環境 541
13.1.3 編譯python庫 541
13.1.4 使用python庫 542
13.2 嵌入Python 543
13.2.1 初始化解釋器 543
13.2.2 封裝Python對象 544
13.2.3 執行Python語句 546
13.2.4 異常處理 547
13.3 擴展Python 548
13.3.1 最簡單的例子 549
13.3.2 導齣函數 551
13.3.3 導齣重載函數 552
13.3.4 導齣類 554
13.3.5 導齣類的更多細節 556
13.3.6 高級議題 558
13.4 總結 560
第14章 其他Boost組件 563
14.1 算法 563
14.2 字符串和文本處理 564
14.3 容器與數據結構 565
14.4 迭代器 566
14.5 函數對象與高級編程 566
14.6 泛型編程 568
14.7 模闆元編程 569
14.8 預處理元編程 569
14.9 並發編程 570
14.10 數學與數字 570
14.11 TR1實現 571
14.12 輸入輸齣 571
14.13 雜項 572
14.14 總結 574
第15章 Boost與設計模式 575
15.1 創建型模式 575
15.2 結構型模式 577
15.3 行為模式 580
15.4 其他模式 583
15.5 總結 584
第16章 結束語 587
16.1 未臻完美的Boost 587
16.2 讓Boost工作得更好 588
16.3 工夫在詩外 590
附錄A 推薦書目 593
附錄B C++標準簡述 595
附錄C STL簡述 597
· · · · · · (
收起)