《C++之旅(第3版)(英文版)》是電子工業出版社出版圖書,作者【美】本賈尼▪史特勞斯特魯普
基本介紹
- 中文名:C++之旅(第3版)(英文版)
- 作者:【美】本賈尼▪史特勞斯特魯普
- 出版時間:2024年2月
- 出版社:電子工業出版社
- 頁數:296 頁
- ISBN:9787121472503
- 定價:109 元
- 開本:16 開
內容簡介,圖書目錄,作者簡介,
內容簡介
一共19章,以C++20為標準,講述了最新的現代C++所提供的編程特性。
有其他語言編程經驗的讀者可以從本書中快速了解C++所具備的功能,從而獲得對現代C++的更全面認知,以便更好地了解現代C++語言已經發展到的程度。資深程式設計師可以從本書作者的整體行文風格中感受到他在設計C++特性時的一些考量及側重點,了解C++這門語言在歷史上曾經歷過的變遷,以及一部分特性為什麼會是今天這個樣子。
《C++之旅(第3版)(英文版)》適合的讀者:有其他語言編程經驗,想要了解C++語言的讀者;有傳統C++編程經驗,想要了解現代C++語言特性的讀者;有較豐富編程經驗且想了解C++之父在C++設計過程中的一些設計細節與思路的讀者。
圖書目錄
1 基礎 17
1.1 引言 17
1.2 程式 18
1.2.1 Hello, World! 18
1.3 函式 20
1.4 類型、變數與運算 21
1.4.1 算術運算 23
1.4.2 初始化 24
1.5 作用域和生命周期 25
1.6 常量 26
1.7 指針、數組和引用 27
1.7.1 空指針 29
1.8 檢驗 30
1.9 映射到硬體 32
1.9.1 賦值 33
1.9.2 初始化 34
1.10 建議 35
2 用戶自定義類型 37
2.1 引言 37
2.2 結構 38
2.3 類 39
2.4 枚舉 41
2.5 聯合 43
2.6 建議 44
3 模組化 45
3.1 引言 45
3.2 分離編譯 46
3.2.1 頭檔案 47
3.2.2 模組 49
3.3 命名空間 51
3.4 函式參數與返回值 53
3.4.1 參數傳遞 54
3.4.2 返回值 55
3.4.3 返回類型推導 56
3.4.4 返回類型後置 56
3.4.5 結構化綁定 57
3.5 建議 58
4 錯誤處理 59
4.1 引言 59
4.2 異常 60
4.3 約束條件 61
4.4 錯誤處理的其他替代方式 63
4.5 斷言 64
4.5.1 assert( ) 65
4.5.2 Static斷言 66
4.5.3 noexcept 66
4.6 建議 67
5 類 69
5.1 引言 69
5.1.1 類的概述 70
5.2 具體類型 70
5.2.1 一種算術類型 71
5.2.2 容器 73
5.2.3 容器的初始化 74
5.3 抽象類型 76
5.4 虛函式 78
5.5 類層次結構 79
5.5.1 類層次結構的益處 81
5.5.2 類層次結構導航 83
5.5.3 避免資源泄漏 83
5.6 建議 85
6 基本操作 87
6.1 引言 87
6.1.1 基本操作 87
6.1.2 轉換 89
6.1.3 成員初始值設定項 90
6.2 拷貝和移動 90
6.2.1 拷貝容器 91
6.2.2 移動容器 92
6.3 資源管理 94
6.4 操作符重載 96
6.5 常規操作 97
6.5.1 比較(關係操作符) 97
6.5.2 容器操作 99
6.5.3 疊代器及智慧型指針 100
6.5.4 輸入與輸出操作 100
6.5.5 swap( ) 100
6.5.6 hash< > 100
6.6 用戶自定義字面量 100
6.7 建議 101
7 模板 103
7.1 引言 103
7.2 參數化類型 104
7.2.1 受限模板參數 105
7.2.2 模板值參數 106
7.2.3 模板參數推導 107
7.3 參數化操作 109
7.3.1 模板函式 109
7.3.2 函式對象 110
7.3.3 匿名函式表達式 111
7.4 模板機制 115
7.4.1 模板變數 115
7.4.2 別名 116
7.4.3 編譯時if 117
7.5 建議 118
8 概念和泛型編程 119
8.1 引言 119
8.2 概念 120
8.2.1 概念的運用 120
8.2.2 基於概念的重載 122
8.2.3 有效代碼 122
8.2.4 定義概念 123
8.2.5 概念與auto 126
8.2.6 類型與概念 127
8.3 泛型編程 128
8.3.1 概念的使用 128
8.3.2 使用模板實現抽象 128
8.4 可變參數模板 130
8.4.1 摺疊表達式 131
8.4.2 完美轉發參數 132
8.5 模板編譯模型 133
8.6 建議 133
9 標準庫 135
9.1 引言 135
9.2 標準庫組件 136
9.3 標準庫的組織 137
9.3.1 命名空間 137
9.3.2 ranges命名空間 138
9.3.3 模組 139
9.3.4 頭檔案 139
9.4 建議 140
10 字元串和正則表達式 141
10.1 引言 141
10.2 字元串 141
10.2.1 string的實現 143
10.3 字元串視圖 144
10.4 正則表達式 146
10.4.1 搜尋 146
10.4.2 正則表達式的符號表示 147
10.4.3 疊代器 151
10.5 建議 152
11 輸入和輸出 153
11.1 引言 153
11.2 輸出 154
11.3 輸入 155
11.4 I/O狀態 157
11.5 用戶自定義類型的I/O 157
11.6 輸出格式化 159
11.6.1 流式格式化 159
11.6.2 printf( )風格的格式化 160
11.7 流 162
11.7.1 標準流 163
11.7.2 檔案流 163
11.7.3 字元串流 163
11.7.4 記憶體流 164
11.7.5 同步流 165
11.8 C風格的I/O 165
11.9 檔案系統 166
11.9.1 路徑 166
11.9.2 檔案和目錄 169
11.10 建議 170
12章 容器 173
12.1 引言 173
12.2 vector 174
12.2.1 元素 176
12.2.2 範圍檢查 177
12.3 list 178
12.4 forward_list 180
12.5 map 180
12.6 unordered_map 181
12.7 分配器 182
12.8 容器概述 184
12.9 建議 186
13 算法 189
13.1 引言 189
13.2 使用疊代器 191
13.3 疊代器類型 194
13.3.1 流疊代器 195
13.4 使用謂詞 197
13.5 標準庫算法概覽 197
13.6 並行算法 199
13.7 建議 199
14 範圍 201
14.1 引言 201
14.2 視圖 202
14.3 生成器 204
14.4 管道 204
14.5 概念概述 206
14.5.1 類型概念 206
14.5.2 疊代器概念 208
14.5.3 範圍概念 209
14.6 建議 210
15 指針和容器 211
15.1 引言 211
15.2 指針類型 212
15.2.1 unique_ptr及shared_ptr 213
15.2.2 span 216
15.3 容器 217
15.3.1 array 218
15.3.2 bitset 220
15.3.3 pair 221
15.3.4 tuple 223
15.4 可變類型容器 224
15.4.1 variant 225
15.4.2 optional 226
15.4.3 any 227
15.5 建議 228
16 實用工具 229
16.1 引言 229
16.2 時間 230
16.2.1 時鐘 230
16.2.2 日曆 230
16.2.3 時區 231
16.3 函式適配 232
16.3.1 匿名函式作為適配器 232
16.3.2 mem_fn( ) 233
16.3.3 function 233
16.4 類型函式 233
16.4.1 類型謂詞 234
16.4.2 條件屬性 236
16.4.3 類型生成器 237
16.4.4 關聯類型 238
16.5 source_location 238
16.6 move( )和forward( ) 239
16.7 位操作 240
16.8 退出程式 241
16.9 建議 241
17 數值計算 243
17.1 引言 243
17.2 數學函式 244
17.3 數值計算算法 245
17.3.1 並行數值算法 245
17.4 複數 246
17.5 隨機數 247
17.6 向量算術 249
17.7 數值界限 250
17.8 類型別名 250
17.9 數學常數 250
17.10 建議 251
18 並發 253
18.1 引言 253
18.2 任務和thread 254
18.2.1 傳遞參數 255
18.2.2 返回結果 256
18.3 共享數據 257
18.3.1 mutex和鎖 257
18.3.2 原子量 259
18.4 等待事件 259
18.5 任務間通信 261
18.5.1 future和promise 261
18.5.2 packaged_task 263
18.5.3 async( ) 263
18.5.4 停止thread 264
18.6 協程 266
18.6.1 協作式多任務 267
18.7 建議 269
19 歷史和兼容性 271
19.1 歷史 271
19.1.1 大事年表 272
19.1.2 早期的C++ 273
19.1.3 ISO C++標準 276
19.1.4 標準與編程風格 277
19.1.5 C++的使用 278
19.1.6 C++模型 278
19.2 C++特性演化 279
19.2.1 C++11語言特性 279
19.2.2 C++14語言特性 280
19.2.3 C++17語言特性 280
19.2.4 C++20語言特性 281
19.2.5 C++11標準庫組件 281
19.2.6 C++14標準庫組件 282
19.2.7 C++17標準庫組件 282
19.2.8 C++20標準庫組件 282
19.2.9 移除或棄用的特性 283
19.3 C/C++兼容性 284
19.3.1 C與C++是兄弟 284
19.3.2 兼容性問題 285
19.4 參考文獻 287
19.5 建議 290
附錄A std模組 293
作者簡介
本賈尼·史特勞斯特魯普是 C++ 的設計者和原始實現者,也是本書及《C++程式設計原理與實踐》(第2版)和《C++程式設計語言》(第4版)等領域名著的作者。他目前是哥倫比亞大學教授,之前曾在 AT&T 貝爾實驗室、德克薩斯 A&M 大學和摩根史坦利工作。他曾獲得無數榮譽,包括因開發和改進 C++ 程式語言所獲的美國國家工程院查爾斯·斯塔克·德雷珀獎。本賈尼·史特勞斯特魯普博士是美國國家工程院院士,也是 IEEE、ACM、CHM 和劍橋邱吉爾學院的院士。