複製鏈接
請複製以下鏈接發送給好友

Boost程序庫探秘:深度解析C++準標準庫

鎖定
《Boost程序庫探秘:深度解析C++準標準庫》是2012年清華大學出版社出版的圖書,作者是羅劍鋒。
中文名
Boost程序庫探秘:深度解析C++準標準庫
作    者
羅劍鋒
出版社
清華大學出版社
出版時間
2012年2月9日
定    價
79 元
裝    幀
平裝
ISBN
9787302274858
印    次
1-1

目錄

Boost程序庫探秘:深度解析C++準標準庫內容簡介

Boost程序庫由C++標準委員會部分成員所設立的Boost社區開發並維護,它功能強大、構造精巧、跨平台、開源並且完全免費,被稱為“C++‘準’標準庫”,已被廣泛應用在實際軟件開發中。
C++的最新標準(C++11)已經正式公佈,而早在這之前,Boost就已經使用庫的形式實現了大部分新功能——而且是完全基於C++98標準實現的,內容涵蓋智能指針、文本處理、併發、模板元等許多領域,其範圍之廣內涵之深甚至要超過C++11標準,極大地增強了C++的功能和表現力。
本書基於Boost1.47版,深入探討了其中的許多重要組件,包括迭代器、函數對象、容器、流處理、序列化以及C++語言中最複雜最具威力的模板元編程,並專闢一章詳細闡述Boost的開發實例,具有較強的實用性,可幫助讀者更好更快地理解掌握Boost的高級用法。
全書內容豐富、組織得當、概念清晰、講解細緻,是廣大C++程序員和愛好者的必備好書。

Boost程序庫探秘:深度解析C++準標準庫目錄

目錄
第0章 導讀 1
0.1 關於本書 1
0.2 讀者對象 2
0.3 本書的風格 3
0.4 本書的開發環境 3
0.5 本書的結構 4
0.6 如何閲讀本書 5
第1章 模板元編程(Ⅰ) 7
1.1 模板元編程概述 7
1.1.1 元數據 8
1.1.2 元函數 9
1.1.3 元函數轉發 10
1.1.4 方便的工具 11
1.1.5 應用示例 12
1.2 type_traits 14
1.2.1 概述 14
1.2.2 元數據類別(Ⅰ) 15
1.2.3 元數據類別(Ⅱ) 17
1.2.4 元數據屬性 18
1.2.5 元數據之間的關係 20
1.2.6 元數據轉換 21
1.2.7 解析函數元數據 25
1.2.8 實現原理 26
1.2.9 應用示例 28
1.3 總結 29
第2章 實用工具 31
2.1 compressed_pair 31
2.1.1 什麼是空類 31
2.1.2 類摘要 33
2.1.3 構造與賦值 34
2.1.4 用法 35
2.1.5 實現原理 36
2.1.6 功能擴展 37
2.2 checked_delete 40
2.2.1 函數的用法 41
2.2.2 函數對象的用法 42
2.2.3 帶檢查的刪除 44
2.2.4 實現原理 45
2.2.5 使用建議 47
2.3 addressof 47
2.3.1 用法 47
2.3.2 實現原理 49
2.3.3 使用建議 49
2.4 value_initialized 50
2.4.1 變量的初始化 50
2.4.2 initialized<T> 51
2.4.3 用法 52
2.4.4 value_initialized<T> 52
2.4.5 更方便的用法 53
2.5 base_from_member 54
2.5.1 類摘要 54
2.5.2 用法 55
2.5.3 進一步的用法 57
2.6 conversion 59
2.6.1 標準轉型操作符 59
2.6.2 多態對象的轉型 60
2.6.3 polymorphic_downcast 61
2.6.4 polymorphic_cast 62
2.6.5 使用模板元編程實現轉型 63
2.7 numeric/conversion 66
2.8 pointer 67
2.8.1 pointee 67
2.8.2 indirect_reference 69
2.8.3 pointer_to_other 69
2.8.4 compare_pointees 70
2.9 scope_exit 72
2.9.1 用法 72
2.9.2 應用示例 73
2.9.3 實現原理 74
2.9.4 注意事項 75
2.10 總結 76
第3章 迭代器 79
3.1 迭代器概述 79
3.1.2 標準迭代器 80
3.1.3 新式迭代器 81
3.1.4 標準迭代器工具 83
3.1.5 迭代器與算法 84
3.2 next_prior 84
3.2.1 函數聲明 85
3.2.2 用法 85
3.3 iterator_traits 87
3.3.1 標準迭代器特徵類 87
3.3.2 類摘要 88
3.3.3 用法 89
3.4 iterator_facade 89
3.4.1 迭代器的核心操作 90
3.4.2 類摘要 90
3.4.3 用法 92
3.5 iterator_adaptor 96
3.5.1 類摘要 96
3.5.2 用法 98
3.6 迭代器工具 99
3.6.1 共享容器迭代器 99
3.6.2 發生器迭代器 102
3.6.3 逆向迭代器 104
3.6.4 間接迭代器 105
3.6.5 計數迭代器 107
3.6.6 函數輸入迭代器 110
3.6.7 函數輸出迭代器 113
3.6.8 過濾迭代器 115
3.6.9 轉換迭代器 118
3.6.10 索引迭代器 119
3.6.11 組合迭代器 121
3.7 總結 124
第4章 函數對象 127
4.1 hash 127
4.1.1 類摘要 128
4.1.2 用法 129
4.1.3 實現原理 130
4.1.4 擴展hash 131
4.2 mem_fn 134
4.2.1 工作原理 134
4.2.2 用法 134
4.2.3 其他議題 136
4.3 factory 137
4.3.1 類摘要 138
4.3.2 用法 138
4.3.3 value_factory 141
4.3.4 使用typeof庫 141
4.4 forward 142
4.4.1 類摘要 142
4.4.2 用法 143
4.5 總結 145
第5章 指針容器 147
5.1 概述 147
5.1.1 入門示例 148
5.1.2 指針容器的優缺點 151
5.1.3 可克隆概念 152
5.1.4 克隆分配器 153
5.1.5 指針容器的分類 154
5.2 指針容器的共通能力 157
5.2.1 模板參數 157
5.2.2 構造與賦值
5.2.3 訪問元素 160
5.2.4 其他能力 162
5.3 序列指針容器適配器 163
5.3.1 配置元函數 163
5.3.2 類摘要 164
5.3.3 接口解説 166
5.3.4 代碼示例 166
5.4 ptr_vector 167
5.4.1 類摘要 168
5.4.2 用法 169
5.5 ptr_deque 170
5.5.1 類摘要 170
5.5.2 用法 171
5.6 ptr_list 172
5.6.1 類摘要 172
5.6.2 用法 173
5.7 ptr_array 174
5.7.1 類摘要 174
5.7.2 用法 175
5.8 ptr_circular_buffer 177
5.8.1 類摘要 177
5.8.2 用法 178
5.9 空指針處理 179
5.9.1 禁用空指針 179
5.9.2 允許空指針 179
5.9.3 使用空指針 181
5.9.4 空對象模式 182
5.10 關聯指針容器的共通能力 184
5.10.1 類摘要 184
5.10.2 接口解説 185
5.11 集合指針容器適配器 186
5.11.1 配置元函數 186
5.11.2 ptr_set_adapter 187
5.11.3 ptr_multiset_adapter 188
5.12 ptr_set和ptr_multiset 189
5.12.1 類摘要 189
5.12.2 用法 190
5.13 ptr_unordered_set和ptr_
unordered_multiset 191
5.13.1 類摘要 191
5.13.2 用法 193
5.14 映射指針容器適配器 194
5.14.1 配置元函數 194
5.14.2 ptr_map_adapter 195
5.14.3 ptr_multimap_adapter 197
5.15 ptr_map和ptr_multimap 198
5.15.1 類摘要 198
5.15.2 用法 199
5.16 ptr_unordered_map和ptr_
unordered_multimap 200
5.16.1 類摘要 200
5.16.2 用法 202
5.17 使用assign庫 203
5.17.1 向容器添加元素 203
5.17.2 初始化容器元素 204
5.18 使用算法 205
5.18.1 標準算法 205
5.18.2 序列指針容器的算法 209
5.18.3 關聯指針容器的算法 212
5.19 其他議題 214
5.19.1 異常 214
5.19.2 間接函數對象 215
5.19.3 插入迭代器 216
5.19.4 使用視圖分配器 217
5.19.5 可克隆性的再討論 218
5.19.6 序列化 219
5.20 總結 219
第6章 侵入式容器 221
6.1 概述 221
6.1.1 手工實現鏈表 222
6.1.2 intrusive庫介紹 223
6.2 入門示例 224
6.2.1 使用基類掛鈎 224
6.2.2 使用成員掛鈎 225
6.3 基本概念 227
6.3.1 節點 228
6.3.2 節點特徵 228
6.3.3 節點算法 229
6.3.4 值特徵 230
6.3.5 掛鈎 231
6.3.6 選項 232
6.3.7 處置器 234
6.3.8 克隆 234
6.4 鏈表 235
6.4.1 節點和算法 235
6.4.2 基類掛鈎 236
6.4.3 成員掛鈎 237
6.4.4 list類摘要 238
6.4.5 list的基本用法 240
6.4.6 list的特有用法 242
6.5 有序集合 246
6.5.1 節點和算法 246
6.5.2 基類掛鈎 247
6.5.3 成員掛鈎 248
6.5.4 set類摘要 248
6.5.5 set的基本用法 250
6.5.6 set的特有用法 251
6.5.7 multiset類摘要 253
6.5.8 multiset的用法 254
6.6 無序集合 254
6.6.1 節點和算法 255
6.6.2 基類掛鈎 255
6.6.3 成員掛鈎 256
6.6.4 unordered_set類摘要 257
6.6.5 unordered_set的基本用法 258
6.6.6 unordered_set的特有用法 260
6.6.7 unordered_multiset類摘要 263
6.6.8 unordered_multiset的用法 263
6.7 其他議題 264
6.7.1 同時使用多個掛鈎 264
6.7.2 鏈接模式 266
6.7.3 萬能掛鈎 266
6.8 總結 267
第7章 多索引容器 269
7.1 概述 269
7.2 入門示例 270
7.2.1 簡單的例子 270
7.2.2 複雜的例子 271
7.2.3 更復雜的例子 273
7.3 基本概念 276
7.3.1 索引 276
7.3.2 索引説明 277
7.3.3 鍵提取器 278
7.3.4 索引説明列表 279
7.3.5 索引標籤 279
7.3.6 多索引容器 280
7.4 鍵提取器 281
7.4.1 定義 281
7.4.2 identity 282
7.4.3 member 283
7.4.4 const_mem_fun 284
7.4.5 mem_fun 286
7.4.6 global_fun 287
7.4.7 自定義鍵提取器 287
7.5 序列索引 288
7.5.1 索引説明 288
7.5.2 類摘要 289
7.5.3 用法 290
7.6 隨機訪問索引 292
7.6.1 索引説明 292
7.6.2 類摘要 292
7.6.3 用法 293
7.7 有序索引 294
7.7.1 索引説明 295
7.7.2 類摘要 295
7.7.3 基本用法 297
7.7.4 高級用法 298
7.8 散列索引 301
7.8.1 索引説明 302
7.8.2 類摘要 302
7.8.3 用法 303
7.9 修改元素 305
7.9.1 替換元素 305
7.9.2 修改元素 306
7.9.3 修改鍵 309
7.10 多索引容器 310
7.10.1 類摘要 310
7.10.2 用法 311
7.11 組合索引鍵 314
7.11.1 類摘要 314
7.11.2 用法 315
7.11.3 輔助工具 316
7.12 總結 318
第8章 流處理 319
8.1 概述 319
8.1.1 標準庫的流處理 319
8.1.2 Boost的流處理 321
8.2 入門示例 322
8.2.1 示例1 322
8.2.2 示例2 324
8.3 設備的特徵 325
8.3.1 設備的字符類型 325
8.3.2 設備的模式 326
8.3.3 設備的分類 328
8.4 設備 329
8.4.1 設備概述 329
8.4.2 數組設備 330
8.4.3 標準容器設備 332
8.4.4 文件設備 334
8.4.5 空設備 335
8.5 過濾器 336
8.5.1 過濾器概述 337
8.5.2 管道和設備鏈 337
8.5.3 計數過濾器 339
8.5.4 正則表達式過濾器(Ⅰ) 341
8.5.5 正則表達式過濾器(Ⅱ) 344
8.5.6 壓縮過濾器 345
8.6 流 348
8.6.1 基本流 348
8.6.2 過濾流 349
8.7 流處理函數 352
8.8 定製設備 353
8.8.1 定製源設備 354
8.8.2 定製接收設備 356
8.9 定製過濾器 357
8.9.1 過濾器實現原理 357
8.9.2 aggregate_filter 358
8.9.3 basic_line_filter 360
8.9.4 手工打造過濾器 361
8.10 組合設備 365
8.10.1 combine 365
8.10.2 compose 366
8.10.3 tee 367
8.11 其他議題 369
8.12 總結 370
第9章 序列化 373
9.1 編譯與使用 373
9.1.1 編譯 373
9.1.2 使用 376
9.2 入門示例 376
9.2.1 示例1 376
9.2.2 示例2 378
9.2.3 示例3 379
9.3 基本概念 381
9.3.1 存檔(archive) 381
9.3.2 可序列化 382
9.3.3 序列化和反序列化 383
9.4 存檔 383
9.4.1 輸出存檔 383
9.4.2 輸入存檔 385
9.4.3 類繼承體系 386
9.4.4 XML格式存檔 387
9.4.5 異常 388
9.5 使用序列化 389
9.5.1 基本類型的序列化 389
9.5.2 數組的序列化 390
9.5.3 標準類型的序列化 392
9.5.4 標準容器的序列化 393
9.5.5 非標準容器的序列化 394
9.5.6 Boost類型的序列化 395
9.5.7 Boost容器的序列化 397
9.6 定製序列化 399
9.6.1 可序列化的要求 399
9.6.2 侵入式可序列化 402
9.6.3 非侵入式可序列化 403
9.6.4 Boost類型的可序列化 404
9.6.5 Boost容器的可序列化 407
9.7 高級定製序列化 410
9.7.1 派生類的序列化 410
9.7.2 序列化的版本 411
9.8 指針的序列化 413
9.8.1 指針可序列化的要求 413
9.8.2 原始指針的序列化 414
9.8.3 智能指針的序列化 414
9.8.4 派生類指針的序列化 415
9.8.5 指針容器的序列化 417
9.9 實用工具 417
9.9.1 BOOST_STRONG_
TYPEDEF 417
9.9.2 BOOST_STATIC_
WARNING 418
9.9.3 smart_cast 418
9.9.4 base64編解碼 419
9.9.5 base16編解碼 422
9.10 總結 424
第10章 泛型編程 427
10.1 enable_if 427
10.1.1 類摘要 428
10.1.2 應用於模板函數 429
10.1.3 應用於模板類 430
10.1.4 lazy_enable_if 431
10.2 call_traits 431
10.2.1 類摘要 432
10.2.2 用法 432
10.2.3 實現原理 434
10.3 concept_check 436
10.3.1 概述 436
10.3.2 基本概念檢查 437
10.3.3 函數對象概念檢查 438
10.3.4 標準迭代器概念檢查 439
10.3.5 新式迭代器概念檢查 440
10.3.6 容器概念檢查 442
10.3.7 在函數聲明中的概念
檢查 444
10.3.8 概念原型類 445
10.4 function_types 446
10.4.1 屬性標籤 447
10.4.2 函數類型分類 448
10.4.3 函數類型分解 449
10.4.4 函數類型合成 451
10.4.5 其他議題 452
10.5 總結 452
第11章 模板元編程(Ⅱ) 455
11.1 mpl概述 455
11.2 mpl的整數類型 456
11.2.1 概述 456
11.2.2 整數類型 458
11.2.3 bool類型 459
11.2.4 基本運算 460
11.3 mpl的流程控制 464
11.3.1 if_和if_c 464
11.3.2 eval_if和eval_if_c 465
11.4 mpl的容器 467
11.4.1 概述 467
11.4.2 vector 468
11.4.3 string 469
11.4.4 map 471
11.4.5 相關元函數 472
11.5 mpl的迭代器 473
11.5.1 概述 473
11.5.2 相關元函數 474
11.6 mpl的算法 475
11.6.1 插入器 475
11.6.2 查詢算法 476
11.6.3 變換算法 478
11.6.4 運行時算法 479
11.7 mpl的高級用法 481
11.7.1 高階元數據 481
11.7.2 佔位符 482
11.7.3 bind表達式 483
11.7.4 lambda表達式 484
11.7.5 算法的高級應用 485
11.8 mpl的調試 488
11.8.1 斷言 488
11.8.2 打印輸出 491
11.9 mpl實例研究 492
11.9.1 泛型編程版本 493
11.9.2 元編程第1版 495
11.9.3 元編程第2版 497
11.10 總結 499
第12章 開發實踐 501
12.1 基本工具 501
12.1.1 標準整數 502
12.1.2 併發 503
12.1.3 日誌 506
12.2 第一個TCP服務器 507
12.2.1 tcp_buffer 508
12.2.2 tcp_server 510
12.2.3 tcp_session 514
12.2.4 驗證 519
12.2.5 使用回調函數 520
12.2.6 簡單協議的實現 523
12.2.7 HTTP協議的實現 529
12.3 多線程工具 532
12.3.1 job_queue 532
12.3.2 worker 535
12.3.3 scheduler 539
12.3.4 safe_map 541
12.3.5 safe_singleton 546
12.4 第二個TCP服務器 547
12.4.1 消息結構定義 548
12.4.2 tcp_message 549
12.4.3 tcp_session 552
12.4.4 tcp_server 558
12.4.5 實現echo協議 560
12.4.6 實現聊天室 562
12.5 總結 571
第13章 Effective Boost 573
13.1 基本原則 573
13.2 內存管理 577
13.3 容器、迭代器和算法 578
13.4 其他 580
13.5 結束語 582
附錄A 推薦書目 583
附錄B Boost程序庫組件索引 585
附錄C 程序員的工具箱 597 [1] 
參考資料