C++11/14 高級編程 : Boost 程序庫探秘, 3/e
內容描述
<內容介紹>
《C++11/14高級編程——Boost程序庫探秘(第3版)》引入了許多強大易用的新特性新功能,從語言層面深刻地改變了C++的開發範式。
Boost程序庫由C++標準委員會部分成員所設立的Boost社區開發並維護,它構造精巧、跨平臺、開源並且完全免費,被稱為“C++'準'標準庫”,已廣泛應用在實際軟件開發中。Boost內容涵蓋智能指針、文本處理、並發、模板元編程、預處理元編程等許多領域,其範圍之廣內涵之深甚至要超過C++11/14標準,極大地增強了C++的功能和表現力。
《C++11/14高級編程——Boost程序庫探秘(第3版)》基於C++最新標準和Boost程序庫1.60版,深入探討了其中的許多特性和高級組件,包括迭代器、函數對象、容器、流處理以及C++語言中最複雜威力的模板元編程和預處理元編程,具有較強的實用性,可幫助讀者深層次地理解掌握現代C++的高級技術和Boost的內部實現機制及用法。
《C++11/14高級編程——Boost程序庫探秘(第3版)》內容豐富、結構合理、概念清晰、講解細緻,是廣大C++程序員和愛好者的必備好書。
<章節目錄>
第0章導讀1
0.1關於本書1
0.2讀者對象2
0.3 C++標準3
0.4開發環境3
0.5代碼風格3
0.6本書的結構4
0.7如何閱讀本書5
0.8本書的源碼6
第1章全新的C++語言7
1.1概述8
1.2左值與右值9
1.2.1定義9
1.2.2右值引用10
1.2.3轉移語義11
1.2.4完美轉發12
1.3自動類型推導13
1.3.1 auto 13
1.3.2 decltype 15
1.3.3 decltype(auto) 17
1.4面向過程編程17
1.4.1空指針17
1.4.2初始化18
1.4.3新式for循環19
1.4.4新式函數聲明20
1.5面向對象編程21
1.5.1 default 21
1.5 .2 delete 22
1.5.3 override 23
1.5.4 final 24
1.5.5成員初始化25
1.5.6委託構造26
1.6泛型編程27
1.6.1類型別名27
1.6.2編譯期常量28
1.6.3靜態斷言29
1.6.4可變參數模板29
1.7函數式編程31
1.7.1 lambda表達式31
1.7.2捕獲外部變量32
1.7.3類型轉換34
1.7.4泛型的lambda表達式35
1.8並發編程35
1.9面向安全編程37
1.9.1無異常保證37
1.9.2內聯名字空間37
1.9.3強類型枚舉38
1.9.4屬性39
1.10更多特性39
1.10.1語言版本號39
1.10.2超長整型40
1.10.3原始字符串40
1.10.4自定義字面值41
1.10.5雜項43
1.11總結44
第2章模板元編程簡介45
2.1概述45
2.2語法元素46
2.3元數據46
2.4元函數47
2.5元函數轉發49
2.6易用的工具宏50
2.7應用示例51
2.8總結52
第3章類型特徵萃取55
3.1概述55
3.2元數據類別56
3.2.1基本類別56
3.2.2複合類別58
3.3元數據屬性60
3.3.1基本屬性60
3.3.2類相關屬性61
3.3.3操作符重載屬性62
3.4元數據關係62
3.5元數據運算63
3.5.1基本運算63
3.5.2特殊運算65
3.6解析函數元數據67
3.7實現原理68
3.7 .1 integral_constant 68
3.7.2 is_integral 69
3.8應用示例70
3.8.1 conditional 70
3.8.2 identity_type 71
3.8.3 declval 72
3.9總結73
第4章實用工具75
4.1 compressed_pair 75
4.1.1空類75
4.1.2類摘要77
4.1.3構造與賦值78
4.1.4用法78
4.1.5實現原理79
4.1.6功能擴展80
4.2 checked_delete 83
4.2.1函數的用法84
4.2.2函數對象的用法85
4.2.3帶檢查的刪除87
4.2.4實現原理89
4.2.5使用建議90
4.3 addressof 90
4.3.1用法91
4.3.2實現原理92
4.3.3使用建議93
4.4 base_from_member 93
4.4.1類摘要93
4.4.2用法94
4.4. 3進一步的用法96
4.5 conversion 98
4.5.1標準轉型操作符98
4.5.2多態對象的轉型99
4.5.3 polymorphic_downcast 101
4.5.4 polymorphic_cast 102
4.5.5對引用轉型103
4.6 numeric conversion 104
4.6.1 bounds 104
4.6.2 numeric_cast 107
4.7 pointer 108
4.7.1 get_pointer 108
4.7.2 pointer_cast 109
4.7.3 pointee 110
4.7.4 indirect_reference 111
4.7.5 pointer_to_other 111
4.7.6 compare_pointees 113
4.7.7 pointer_traits 114
4.8總結115
第5章迭代器117
5.1概述117
5.1.1迭代器模式117
5.1.2標準迭代器118
5.1.3新式迭代器119
5.1.4標準迭代器工具120
5.1.5迭代器與算法122
5.2 next_prior 122
5.2.1函數聲明123
5.2.2用法124
5.2.3 C++11/14標準125
5.3 iterator_traits 125
5.3.1標準迭代器特徵類126
5.3.2類摘要127
5.3.3用法127
5.4 iterator_facade 128
5.4.1迭代器的核心操作128
5.4.2類摘要129
5.4.3用法131
5.5 iterator_adaptor 135
5.5.1類摘要135
5.5.2用法136
5.6迭代器工具139
5.6.1共享容器迭代器139
5.6.2發生器迭代器141
5.6 .3逆向迭代器143
5.6.4間接迭代器144
5.6.5計數迭代器145
5.6.6函數輸入迭代器148
5.6.7函數輸出迭代器151
5.6.8過濾迭代器153
5.6.9轉換迭代器155
5.6.10索引迭代器157
5.6.11組合迭代器159
5.7總結161
第6章區間163
6.1概述163
6.2特徵元函數164
6.3操作函數165
6.4標準算法166
6.4.1返回原區間的算法167
6.4.2返回定製區間的算法168
6.5迭代器區間類170
6.5.1類摘要170
6.5.2用法171
6.6輔助工具173
6.6.1 sub_range 173
6.6.2 counting_range 174
6.6.3 istream_range 174
6.6.4 irange 175
6.6.5 combined_range 175
6.6.6 any_range 176
6.7適配器178
6.7.1適配器列表178
6.7.2用法179
6.7.3實現原理180
6.8其他議題181
6.8.1自定義區間類型181
6.7.2連接區間182
6.9總結182
第7章函數對象185
7.1 hash 185
7.1.1類摘要186
7.1.2用法186
7.1.3實現原理187
7.1.4擴展hash 188
7.2 mem_fn 191
7.2.1工作原理191
7.2.2用法192
7.2.3其他議題193
7.3 factory 194
7.3.1類摘要194
7.3.2用法195
7.3.3 value_factory 197
7.4總結197
第8章指針容器199
8.1概述199
8.1.1入門示例200
8.1.2指針容器的優缺點203
8.1.3可克隆概念204
8.1.4克隆分配器205
8.1.5指針容器的分類206
8.2指針容器的共通功能208
8.2.1模板參數208
8.2.2構造與賦值210
8.2.3訪問元素211
8.2.4其他功能213
8.3序列指針容器適配器214
8.3.1配置元函數214
8.3.2類摘要215
8.3.3接口解說216
8.3.4代碼示例216
8.4 ptr_vector 217
8.4.1類摘要218
8.4.2用法219
8.5空指針處理220
8.5.1禁用空指針220
8.5.2使用空指針220
8.5.3空對像模式221
8.6關聯指針容器的共通功能223
8.6.1類摘要223
8.6.2接口解說224
8.7集合指針容器適配器225
8.7.1配置元函數225
8.7.2 ptr_set_adapter 226
8.8 ptr_set 227
8.8.1類摘要227
8.8.2用法228
8.9 ptr_unordered_set 228
8.9.1類摘要228
8.9.2用法229
8.10映射指針容器適配器230
8.10.1配置元函數230
8.10.2 ptr_map_adapter 231
8.11 ptr_map 233
8.11.1類摘要233
8.11.2用法234
8.12 ptr_unordered_map 234
8.12.1類摘要235
8.12.2用法235
8.13使用assign庫236
8.13.1向容器添加元素236
8.13.2初始化容器元素237
8.14使用算法238
8.14.1標準算法238
8.14.2序列指針容器的算法242
8.14.3關聯指針容器的算法244
8.15其他議題246
8.15.1異常247
8.15.2間接函數對象247
8.15.3插入迭代器248
8.15.4使用視圖分配器248
8.15.5可克隆性的再討論249
8.16總結250
第9章侵入式容器251
9.1概述251
9.1.1手工實現鍊錶252
9.1.2 intrusive庫介紹253
9.2入門示例254
9.2.1使用基類掛鉤254
9.2.2使用成員掛鉤255
9.3基本概念257
9.3.1節點257
9.3.2節點特徵258
9.3.3節點算法258
9.3.4值特徵260
9.3.5掛鉤260
9.3.6選項262
9.3.7處置器263
9.3.8克隆264
9.4鍊錶264
9.4.1節點和算法265
9.4.2基類掛鉤266
9.4.3成員掛鉤267
9.4.4類摘要267
9.4.5基本用法269
9.4.6特有用法271
9.5有序集合275
9.5.1節點和算法275
9.5.2基類掛鉤276
9.5.3成員掛鉤277
9.5.4 set類摘要277
9.5.5基本用法279
9.5.6特有用法280
9.6無序集合282
9.6.1節點和算法282
9.6.2基類掛鉤283
9.6.3成員掛鉤284
9.6.4類摘要284
9.6.5基本用法286
9.6.6 unordered_set的特有用法288
9.7其他議題290
9.7.1鏈接模式290
9.7.2同時使用多個掛鉤291
9.7.3萬能掛鉤293
9.8總結293
第10章多索引容器295
10.1概述295
10.2入門示例296
10.2.1簡單的例子296
10.2.2複雜的例子297
10.2.3更複雜的例子299
10.3基本概念302
10.3.1索引302
10.3.2索引說明303
10.3.3鍵提取器304
10.3.4索引說明列表304
10.3.5索引標籤305
10.3.6多索引容器305
10.4鍵提取器306
10.4.1定義306
10.4.2 identity 307
10.4.3 member 308
10.4.4 const_mem_fun 310
10.4.5 mem_fun 311
10.4.6 global_fun 312
10.4.7自定義鍵提取器313
10.5序列索引313
10.5.1索引說明313
10.5.2類摘要314
10.5.3用法315
10.6隨機訪問索引317
10.6.1索引說明317
10.6.2類摘要317
10.6.3用法318
10.7有序索引320
10.7.1索引說明320
10.7.2類摘要320
10.7.3基本用法322
10.7.4高級用法323
10.8散列索引326
10.8.1索引說明326
10.8.2類摘要326
10.8.3用法327
10.9修改元素329
10.9.1替換元素329
10.9.2修改元素330
10.9.3修改鍵332
10.10多索引容器333
10.10.1類摘要333
10.10.2用法334
10.11組合索引鍵337
10.11.1類摘要337
10.11.2用法338
10.11.3輔助工具339
10.12總結341
第11章流處理343
11.1概述343
11.1.1標準庫的流處理343
11.1.2 Boost的流處理345
11.2入門示例346
11.2.1示例1 346
11.2.2示例2 347
11.3設備的特徵349
11.3.1設備的字符類型349
11.3.2設備的模式349
11.3.3設備的分類350
11.4設備351
11.4.1概述351
11.4.2數組設備352
11.4.3標準容器設備354
11.4.4文件設備355
11.4 .5空設備357
11.5過濾器358
11.5.1概述358
11.5.2設備鍊和管道359
11.5.3計數過濾器361
11.5.4換行過濾器362
11.5.5正則表達式過濾器(Ⅰ) 364
11.5. 6正則表達式過濾器(Ⅱ) 366
11.5.7壓縮過濾器368
11.6流369
11.6.1基本流370
11.6.2過濾流371
11.7流處理函數373
11.8定製設備374
11.8.1定製源設備374
11.8. 2定製接收設備377
11.9定製過濾器377
11.9.1過濾器的實現原理378
11.9.2 aggregate_filter 379
11.9.3 basic_line_filter 380
11.9.4手工打造過濾器381
11.10組合設備385
11.10.1 combine 385
11.10.2 compose 386
11.10.3 invert 387
11.10.4 restrict 389
11.10.5 tee 390
11.11其他議題391
11.11.1對象的生存週期391
11.11.2與迭代器的比較391
11.12總結392
第12章泛型編程395
12.1 enable_if 395
12.1.1類摘要396
12.1.2應用於模板函數397
12.1.3應用於模板類398
12.1.4對比C++11標準399
12.2 call_traits 399
12.2.1類摘要399
12.2.2用法400
12.2.3實現原理402
12.3 concept_check 403
12.3.1概述404
12.3.2基本概念檢查405
12.3.3函數對象概念檢查405
12.3.4標準迭代器概念檢查406
12.3.5新式迭代器概念檢查407
12.3.6容器概念檢查409
12.3.7區間概念檢查411
12.3.8在函數聲明中的概念檢查411
12.3.9概念原型類413
12.4總結414
第13章模板元編程415
13.1概述415
13.2整數類型416
13.2.1簡介416
13.2.2整數類型418
13.2.3 bool類型419
13.2.4基本運算419
13.3流程控制421
13.3.1 if_和if_c 421
13.3.2 eval_if和eval_if_c 422
13.4容器423
13.4.1簡介424
13.4.2 vector 425
13.4.3 string 426
13.4.4 map 427
13.4.5相關元函數428
13.5迭代器429
13.5.1簡介429
13.5.2相關元函數430
13.6算法431
13.6.1插入器431
13.6.2查詢算法432
13.6.3變換算法433
13.6.4運行時算法434
13.7高級用法435
13.7.1高階元數據436
13.7.2佔位符437
13.7.3 bind表達式437
13.7.4 lambda表達式438
13.7.5算法的高級應用439
13.8斷言441
13.8.1基本斷言442
13.8.2否定斷言442
13.8.3關係斷言443
13.8.4定製消息的斷言443
13.9實例研究444
13.9.1泛型編程版本444
13.9.2元編程第1版446
13.9.3元編程第2版449
13.10總結450
第14章預處理元編程453
14.1概述453
14.1.1元數據454
14.1.2基本語法454
14.1.3特殊符號456
14.1.4特殊操作符456
14.2整數運算457
14.3常用元函數458
14.3.1 ASSERT 458
14.3.2 IF 459
14.3.3 ENUM 459
14.3.4 REPEAT 460
14.4高級數據結構461
14.5總結462
第15章現代C++開發淺談463
15.1基本原則463
15.2內存管理467
15.3容器、迭代器和算法468
15.4其他469
15.5結束語471
附錄A推薦書目473
附錄B Boost程序庫組件索引475
附錄C Boost程序庫安裝簡介485