《寫給大忙人看的C++》是2015年8月電子工業出版社出版的圖書,作者是【美】Brian Overland(布萊恩.奧弗蘭德)。
基本介紹
- 書名:寫給大忙人看的C++
- 作者:【美】Brian Overland(布萊恩.奧弗蘭德)著
- 譯者:盧濤 李穎 譯
- ISBN:978-7-121-26861-8
- 頁數:604頁
- 定價:109.00元
- 出版社:電子工業出版社
- 出版時間:2015年8月出版
- 裝幀:平裝
- 開本:16開
內容簡介,內容提要,目錄,
內容簡介
《寫給大忙人看的C++》全面介紹了C++語言知識,既提供了學習C++語言最新功能的捷徑,也為快速找到特定問題的答案提供了便利。《寫給大忙人看的C++》簡明地描述了C++核心語言和標準庫中幾乎所有的函式、對象和運算符,一目了然地顯示了語法、結構和重要函式的信息,內容組織形式便於快速查找信息。《寫給大忙人看的C++》精選了實用的例子來深入地講解概念,還提供了富有挑戰性的練習及參考答案,便於讀者舉一反三,鞏固所學的知識。《寫給大忙人看的C++》涵蓋了C++11的新特性,包括:lambda表達式、右值引用、正則表達式庫、隨機庫、散列表容器、智慧型指針等。
《寫給大忙人看的C++》既適合需要快速了解C++的初學者,也適合想要了解C++11的新特性的有C++編程經驗的高級程式設計師,還可作為開發人員工作中的C++綜合參考。
內容提要
《寫給大忙人看的C++》全面介紹了C++語言知識,既提供了學習C++語言最新功能的捷徑,也為快速找到特定問題的答案提供了便利。《寫給大忙人看的C++》簡明地描述了C++核心語言和標準庫中幾乎所有的函式、對象和運算符,一目了然地顯示了語法、結構和重要函式的信息,內容組織形式便於快速查找信息。《寫給大忙人看的C++》精選了實用的例子來深入地講解概念,還提供了富有挑戰性的練習及參考答案,便於讀者舉一反三,鞏固所學的知識。《寫給大忙人看的C++》涵蓋了C++11的新特性,包括:lambda表達式、右值引用、正則表達式庫、隨機庫、散列表容器、智慧型指針等。
《寫給大忙人看的C++》既適合需要快速了解C++的初學者,也適合想要了解C++11的新特性的有C++編程經驗的高級程式設計師,還可作為開發人員工作中的C++綜合參考。
目錄
第1章 C++基礎 1
1.1 組成C++程式的元素 1
1.1.1 #include指令 2
1.1.2 using語句 2
1.1.3 main函式 3
1.2 處理“閃爍的控制台一閃而過” 4
1.3 使用Microsoft Visual Studio 4
1.4 使用C++執行更多的操作 5
1.5 添加簡單的變數聲明 7
1.6 介紹C++控制結構 9
1.6.1 使用“if”做判斷 9
1.6.2 使用“while”循環 11
1.7 C++程式的一般結構 12
1.8 關於命名空間的更多內容 13
1.9 關於注釋的一些解釋 15
1.9.1 C++注釋(行注釋) 15
1.9.2 C語言風格的注釋 15
1.10 示例應用程式:加法機 16
練習 17
1.11 示例應用程式:計算phi 18
練習 20
第2章 數據 21
2.1 聲明簡單變數 22
2.2 基本數據類型 23
2.2.1 整數類型:準則 24
2.2.2 浮點類型:準則 25
2.3 符號名(符號) 25
2.4 字面量 26
2.5 混合數值類型 29
2.5.1 整數與浮點數 29
2.5.2 布爾型與整型 30
2.5.3 有符號整數與無符號整數 30
2.6 字元串和字元字面量 33
2.6.1 單引號字元 33
2.6.2 雙引號字元串 34
2.6.3 特殊字元(轉義序列) 36
2.6.4 寬字元串 39
2.6.5 原始字元串字面量(C++11) 40
2.7 數據聲明:完整的語法 40
2.8 枚舉類型 43
2.9 特殊聲明(typedef、auto、decltype) 45
2.9.1 typedef關鍵字 45
2.9.2 auto和decltype關鍵字(C++11) 46
2.10 示例應用程式:類型提升 47
練習 48
第3章 運算符 49
3.1 優先權、結合性及左值 49
3.1.1 優先權 49
3.1.2 結合性 50
3.1.3 左值 50
3.2 運算符的簡明概述 51
3.3 運算符的詳細信息 53
3.3.1 範圍運算符 53
3.3.2 數據訪問及其他高優先權的運算符 54
3.3.3 前綴運算符 55
3.3.4 指向成員的指針運算符 58
3.3.5 乘法和除法 59
3.3.6 加法和減法 60
3.3.7 移位運算符 60
3.3.8 小於和大於 61
3.3.9 測試相等 62
3.3.10 位運算和邏輯連詞 63
3.3.11 條件運算符 64
3.3.12 賦值運算符 64
3.3.13 throw運算符 67
3.3.14 連線運算符 67
3.4 善惡之爭:後綴或前綴 67
3.5 位運算符的詳細信息 68
3.5.1 按位與、或、異或 68
3.5.2 對有符號數和無符號數的操作 69
3.5.3 按位移位 71
3.6 類型轉換運算符 71
3.6.1 static_cast運算符 72
3.6.2 reinterpret_cast運算符 73
3.6.3 const_cast運算符 74
3.6.4 dynamic_cast運算符 75
3.6.5 C語言的類型轉換 76
3.7 示例應用程式:列印輸出二進制基數 76
練習 78
第4章 控制結構 80
4.1 C++語句的簡明概述 80
4.2 空語句和表達式語句 82
4.3 複合語句 83
4.4 if和if-else語句 84
4.5 while和do-while語句 86
4.6 for語句 87
4.7 基於範圍的for語句(C++11) 89
4.8 switch語句 90
4.9 跳轉語句(break、continue、goto) 92
4.10 異常處理(try、catch) 94
4.10.1 什麼是異常 94
4.10.2 try-catch代碼塊:常規語法 95
4.10.3 catch塊和異常對象 96
4.10.4 拋出一個異常 97
4.11 示例應用程式:猜數字遊戲 98
練習 99
4.12 示例應用程式:計算機猜數字 100
練習 102
第5章 函式 103
5.1 傳統的(命名)函式概述 103
5.1.1 函式原型與定義 104
5.1.2 原型化一個函式(簡化的語法) 105
5.1.3 定義函式 105
5.1.4 調用函式 107
5.2 局部和全局變數 107
5.3 完整的函式聲明語法 109
5.4 函式重載 111
5.5 帶有默認值的參數 112
5.6 可變長度參數列表 113
5.7 lambda函式或匿名函式(C++11) 115
5.7.1 lambda函式的基本語法 116
5.7.2 lambda函式的閉包語法 117
5.7.3 mutable關鍵字 120
5.7.4 將lambda表達式與STL連用 120
5.7.5 存儲和返回lambda函式 122
5.8 constexpr函式(C++11) 124
5.9 示例應用程式:骰子的機率 125
練習 127
第6章 指針、數組和引用 129
6.1 引用 129
6.1.1 引用參數 129
6.1.2 從函式中返回一個引用 132
6.1.3 用“const”修飾的引用 132
6.2 數組 133
6.2.1 簡單的(一維)數組 134
6.2.2 數組處理與循環 135
6.2.3 向函式傳遞數組 136
6.2.4 多維數組 137
6.3 指針 139
6.3.1 指針的概念 139
6.3.2 將指針作為參數 141
6.3.3 用於訪問數組的指針 142
6.3.4 指針運算 145
6.3.5 指針與數組參數 145
6.3.6 指針和記憶體分配 146
6.3.7 指向const類型的指針 148
6.3.8 對指針本身套用const 150
6.3.9 void指針(void *) 151
6.4 涉及指針的複合聲明 152
6.5 傳遞和返回函式指針 155
6.6 智慧型指針(C++11) 156
6.6.1 shared_ptr模板 157
6.6.2 unique_ptr模板 160
6.7 示例應用程式:埃拉托色尼篩 162
練習 163
第7章 類與對象 165
7.1 概述:結構、聯合和類 165
7.2 基本的類聲明語法 166
7.2.1 聲明和使用一個類 167
7.2.2 數據成員訪問(公有、私有、保護) 168
7.2.3 定義成員函式 170
7.2.4 調用成員函式 173
7.2.5 私有成員函式 175
7.2.6 包含類的類 175
7.2.7 靜態成員 177
7.3 構造函式 179
7.3.1 默認構造函式 180
7.3.2 重載的構造函式和轉換函式 182
7.3.3 複製構造函式 183
7.3.4 構造函式初始化列表 184
7.3.5 委託構造函式(C++11) 187
7.3.6 默認成員初始化(C++11) 188
7.4 析構函式 188
7.5 隱藏的this指針 189
7.6 運算符函式(運算符重載) 190
7.6.1 將運算符函式作為成員 191
7.6.2 作為友元的運算符函式 192
7.6.3 賦值運算符 194
7.6.4 函式調用運算符 195
7.6.5 下標運算符 196
7.6.6 遞增運算符和遞減運算符 197
7.6.7 傳入和傳出轉換函式 198
7.7 派生類(子類化) 199
7.7.1 子類語法 200
7.7.2 基類訪問說明 201
7.7.3 繼承的構造函式(C++11) 202
7.7.4 向上強制類型轉換:子對象和基類指針 203
7.7.5 虛函式和重載 205
7.7.6 純虛函式 207
7.7.7 override關鍵字(C++11) 207
7.7.8 解決層次結構中的名字衝突 208
7.8 位欄位 209
7.9 聯合 211
7.9.1 命名聯合 211
7.9.2 匿名聯合 213
7.10 示例應用程式:打包的布爾 213
演習 216
第8章 預處理器指令 217
8.1 預處理器指令的常規語法 217
8.2 預處理器指令小結 218
8.3 使用指令來解決具體問題 221
8.3.1 用#define創建有意義的符號 221
8.3.2 用#define創建宏 223
8.3.3 條件編譯(#if、#endif等) 224
8.4 預處理器運算符 226
8.5 預定義宏 227
8.6 創建項目頭檔案 229
第9章 創建和使用模板 231
9.1 模板:語法和概述 231
9.2 函式模板 233
9.2.1 單參數的函式模板 233
9.2.2 處理類型歧義 235
9.2.3 有兩個參數的函式模板 235
9.3 類模板 237
9.3.1 簡單的類模板 238
9.3.2 實例化類模板 239
9.4 類模板與成員函式 240
9.4.1 類模板與內聯成員函式 240
9.4.2 具有獨立函式定義的類模板 241
9.5 使用整型模板參數 242
9.6 模板專門化 243
9.7 可變參數模板(C++11) 245
9.7.1 更複雜的可變模板 247
9.7.2 可變參數模板規則概述 248
9.7.3 元組 249
9.8 示例應用程式:類型提升 250
練習 251
第10章 C-字元串庫函式 252
10.1 C-字元串格式概述 252
10.2 使用C-字元串輸入和輸出 254
10.3 C-字元串函式 255
10.4 用strtok對字元串標記化 260
10.5 單字元函式 261
10.6 記憶體塊函式(memcpy等) 264
10.7 寬字元函式(wstrcpy等) 266
第11章 C I/O庫函式 268
11.1 C I/O庫概述 268
11.2 控制台I/O函式 269
11.3 列印/掃描格式 272
11.3.1 printf格式說明符(%) 272
11.3.2 高級printf格式的語法 274
11.3.3 將格式說明符與scanf函式配合使用 276
11.4 輸入和輸出字元串 278
11.5 檔案I/O 279
11.5.1 打開檔案 280
11.5.2 關閉檔案 282
11.5.3 讀取和寫入文本檔案 282
11.5.4 讀寫二進制檔案 284
11.5.5 隨機訪問函式 286
11.5.6 其他檔案管理函式 287
第12章 數學、時間和其他庫函式 289
12.1 三角函式 290
12.2 其他數學函式 292
12.3 C語言的日期和時間庫 294
12.3.1 日期和時間函式 295
12.3.2 TM(“Time”)數據結構 298
12.3.3 日期/時間格式說明符(strftime) 299
12.4 從字元串到數字的轉換 302
12.5 記憶體分配函式 304
12.6 標準C隨機函式 305
12.7 查找和排序函式 306
12.7.1 bsearch函式(二分查找) 307
12.7.2 qsort函式(快速排序) 308
12.7.3 使用C字元串的比較函式 310
12.8 其他標準C庫函式 310
12.9 示例應用程式:智障學者 312
練習 314
第13章 C++的I/O流類 315
13.1 C++的I/O流的基礎知識 315
13.1.1 用“<<”寫入輸出 316
13.1.2 用“>>”讀取輸入 316
13.2 利用getline讀取輸入行 318
13.3 C++流類的層次結構 319
13.4 流對象:控制符及標誌 321
13.4.1 流控制符 322
13.4.2 流格式標誌 329
13.5 流成員函式(通用) 331
13.5.1 輸入流函式 331
13.5.2 輸出流函式 333
13.5.3 標記設定流函式 334
13.6 檔案流操作 337
13.6.1 概述:文本與二進制檔案I/O 337
13.6.2 創建一個檔案對象 338
13.6.3 檔案的特定成員函式 341
1.1 組成C++程式的元素 1
1.1.1 #include指令 2
1.1.2 using語句 2
1.1.3 main函式 3
1.2 處理“閃爍的控制台一閃而過” 4
1.3 使用Microsoft Visual Studio 4
1.4 使用C++執行更多的操作 5
1.5 添加簡單的變數聲明 7
1.6 介紹C++控制結構 9
1.6.1 使用“if”做判斷 9
1.6.2 使用“while”循環 11
1.7 C++程式的一般結構 12
1.8 關於命名空間的更多內容 13
1.9 關於注釋的一些解釋 15
1.9.1 C++注釋(行注釋) 15
1.9.2 C語言風格的注釋 15
1.10 示例應用程式:加法機 16
練習 17
1.11 示例應用程式:計算phi 18
練習 20
第2章 數據 21
2.1 聲明簡單變數 22
2.2 基本數據類型 23
2.2.1 整數類型:準則 24
2.2.2 浮點類型:準則 25
2.3 符號名(符號) 25
2.4 字面量 26
2.5 混合數值類型 29
2.5.1 整數與浮點數 29
2.5.2 布爾型與整型 30
2.5.3 有符號整數與無符號整數 30
2.6 字元串和字元字面量 33
2.6.1 單引號字元 33
2.6.2 雙引號字元串 34
2.6.3 特殊字元(轉義序列) 36
2.6.4 寬字元串 39
2.6.5 原始字元串字面量(C++11) 40
2.7 數據聲明:完整的語法 40
2.8 枚舉類型 43
2.9 特殊聲明(typedef、auto、decltype) 45
2.9.1 typedef關鍵字 45
2.9.2 auto和decltype關鍵字(C++11) 46
2.10 示例應用程式:類型提升 47
練習 48
第3章 運算符 49
3.1 優先權、結合性及左值 49
3.1.1 優先權 49
3.1.2 結合性 50
3.1.3 左值 50
3.2 運算符的簡明概述 51
3.3 運算符的詳細信息 53
3.3.1 範圍運算符 53
3.3.2 數據訪問及其他高優先權的運算符 54
3.3.3 前綴運算符 55
3.3.4 指向成員的指針運算符 58
3.3.5 乘法和除法 59
3.3.6 加法和減法 60
3.3.7 移位運算符 60
3.3.8 小於和大於 61
3.3.9 測試相等 62
3.3.10 位運算和邏輯連詞 63
3.3.11 條件運算符 64
3.3.12 賦值運算符 64
3.3.13 throw運算符 67
3.3.14 連線運算符 67
3.4 善惡之爭:後綴或前綴 67
3.5 位運算符的詳細信息 68
3.5.1 按位與、或、異或 68
3.5.2 對有符號數和無符號數的操作 69
3.5.3 按位移位 71
3.6 類型轉換運算符 71
3.6.1 static_cast運算符 72
3.6.2 reinterpret_cast運算符 73
3.6.3 const_cast運算符 74
3.6.4 dynamic_cast運算符 75
3.6.5 C語言的類型轉換 76
3.7 示例應用程式:列印輸出二進制基數 76
練習 78
第4章 控制結構 80
4.1 C++語句的簡明概述 80
4.2 空語句和表達式語句 82
4.3 複合語句 83
4.4 if和if-else語句 84
4.5 while和do-while語句 86
4.6 for語句 87
4.7 基於範圍的for語句(C++11) 89
4.8 switch語句 90
4.9 跳轉語句(break、continue、goto) 92
4.10 異常處理(try、catch) 94
4.10.1 什麼是異常 94
4.10.2 try-catch代碼塊:常規語法 95
4.10.3 catch塊和異常對象 96
4.10.4 拋出一個異常 97
4.11 示例應用程式:猜數字遊戲 98
練習 99
4.12 示例應用程式:計算機猜數字 100
練習 102
第5章 函式 103
5.1 傳統的(命名)函式概述 103
5.1.1 函式原型與定義 104
5.1.2 原型化一個函式(簡化的語法) 105
5.1.3 定義函式 105
5.1.4 調用函式 107
5.2 局部和全局變數 107
5.3 完整的函式聲明語法 109
5.4 函式重載 111
5.5 帶有默認值的參數 112
5.6 可變長度參數列表 113
5.7 lambda函式或匿名函式(C++11) 115
5.7.1 lambda函式的基本語法 116
5.7.2 lambda函式的閉包語法 117
5.7.3 mutable關鍵字 120
5.7.4 將lambda表達式與STL連用 120
5.7.5 存儲和返回lambda函式 122
5.8 constexpr函式(C++11) 124
5.9 示例應用程式:骰子的機率 125
練習 127
第6章 指針、數組和引用 129
6.1 引用 129
6.1.1 引用參數 129
6.1.2 從函式中返回一個引用 132
6.1.3 用“const”修飾的引用 132
6.2 數組 133
6.2.1 簡單的(一維)數組 134
6.2.2 數組處理與循環 135
6.2.3 向函式傳遞數組 136
6.2.4 多維數組 137
6.3 指針 139
6.3.1 指針的概念 139
6.3.2 將指針作為參數 141
6.3.3 用於訪問數組的指針 142
6.3.4 指針運算 145
6.3.5 指針與數組參數 145
6.3.6 指針和記憶體分配 146
6.3.7 指向const類型的指針 148
6.3.8 對指針本身套用const 150
6.3.9 void指針(void *) 151
6.4 涉及指針的複合聲明 152
6.5 傳遞和返回函式指針 155
6.6 智慧型指針(C++11) 156
6.6.1 shared_ptr模板 157
6.6.2 unique_ptr模板 160
6.7 示例應用程式:埃拉托色尼篩 162
練習 163
第7章 類與對象 165
7.1 概述:結構、聯合和類 165
7.2 基本的類聲明語法 166
7.2.1 聲明和使用一個類 167
7.2.2 數據成員訪問(公有、私有、保護) 168
7.2.3 定義成員函式 170
7.2.4 調用成員函式 173
7.2.5 私有成員函式 175
7.2.6 包含類的類 175
7.2.7 靜態成員 177
7.3 構造函式 179
7.3.1 默認構造函式 180
7.3.2 重載的構造函式和轉換函式 182
7.3.3 複製構造函式 183
7.3.4 構造函式初始化列表 184
7.3.5 委託構造函式(C++11) 187
7.3.6 默認成員初始化(C++11) 188
7.4 析構函式 188
7.5 隱藏的this指針 189
7.6 運算符函式(運算符重載) 190
7.6.1 將運算符函式作為成員 191
7.6.2 作為友元的運算符函式 192
7.6.3 賦值運算符 194
7.6.4 函式調用運算符 195
7.6.5 下標運算符 196
7.6.6 遞增運算符和遞減運算符 197
7.6.7 傳入和傳出轉換函式 198
7.7 派生類(子類化) 199
7.7.1 子類語法 200
7.7.2 基類訪問說明 201
7.7.3 繼承的構造函式(C++11) 202
7.7.4 向上強制類型轉換:子對象和基類指針 203
7.7.5 虛函式和重載 205
7.7.6 純虛函式 207
7.7.7 override關鍵字(C++11) 207
7.7.8 解決層次結構中的名字衝突 208
7.8 位欄位 209
7.9 聯合 211
7.9.1 命名聯合 211
7.9.2 匿名聯合 213
7.10 示例應用程式:打包的布爾 213
演習 216
第8章 預處理器指令 217
8.1 預處理器指令的常規語法 217
8.2 預處理器指令小結 218
8.3 使用指令來解決具體問題 221
8.3.1 用#define創建有意義的符號 221
8.3.2 用#define創建宏 223
8.3.3 條件編譯(#if、#endif等) 224
8.4 預處理器運算符 226
8.5 預定義宏 227
8.6 創建項目頭檔案 229
第9章 創建和使用模板 231
9.1 模板:語法和概述 231
9.2 函式模板 233
9.2.1 單參數的函式模板 233
9.2.2 處理類型歧義 235
9.2.3 有兩個參數的函式模板 235
9.3 類模板 237
9.3.1 簡單的類模板 238
9.3.2 實例化類模板 239
9.4 類模板與成員函式 240
9.4.1 類模板與內聯成員函式 240
9.4.2 具有獨立函式定義的類模板 241
9.5 使用整型模板參數 242
9.6 模板專門化 243
9.7 可變參數模板(C++11) 245
9.7.1 更複雜的可變模板 247
9.7.2 可變參數模板規則概述 248
9.7.3 元組 249
9.8 示例應用程式:類型提升 250
練習 251
第10章 C-字元串庫函式 252
10.1 C-字元串格式概述 252
10.2 使用C-字元串輸入和輸出 254
10.3 C-字元串函式 255
10.4 用strtok對字元串標記化 260
10.5 單字元函式 261
10.6 記憶體塊函式(memcpy等) 264
10.7 寬字元函式(wstrcpy等) 266
第11章 C I/O庫函式 268
11.1 C I/O庫概述 268
11.2 控制台I/O函式 269
11.3 列印/掃描格式 272
11.3.1 printf格式說明符(%) 272
11.3.2 高級printf格式的語法 274
11.3.3 將格式說明符與scanf函式配合使用 276
11.4 輸入和輸出字元串 278
11.5 檔案I/O 279
11.5.1 打開檔案 280
11.5.2 關閉檔案 282
11.5.3 讀取和寫入文本檔案 282
11.5.4 讀寫二進制檔案 284
11.5.5 隨機訪問函式 286
11.5.6 其他檔案管理函式 287
第12章 數學、時間和其他庫函式 289
12.1 三角函式 290
12.2 其他數學函式 292
12.3 C語言的日期和時間庫 294
12.3.1 日期和時間函式 295
12.3.2 TM(“Time”)數據結構 298
12.3.3 日期/時間格式說明符(strftime) 299
12.4 從字元串到數字的轉換 302
12.5 記憶體分配函式 304
12.6 標準C隨機函式 305
12.7 查找和排序函式 306
12.7.1 bsearch函式(二分查找) 307
12.7.2 qsort函式(快速排序) 308
12.7.3 使用C字元串的比較函式 310
12.8 其他標準C庫函式 310
12.9 示例應用程式:智障學者 312
練習 314
第13章 C++的I/O流類 315
13.1 C++的I/O流的基礎知識 315
13.1.1 用“<<”寫入輸出 316
13.1.2 用“>>”讀取輸入 316
13.2 利用getline讀取輸入行 318
13.3 C++流類的層次結構 319
13.4 流對象:控制符及標誌 321
13.4.1 流控制符 322
13.4.2 流格式標誌 329
13.5 流成員函式(通用) 331
13.5.1 輸入流函式 331
13.5.2 輸出流函式 333
13.5.3 標記設定流函式 334
13.6 檔案流操作 337
13.6.1 概述:文本與二進制檔案I/O 337
13.6.2 創建一個檔案對象 338
13.6.3 檔案的特定成員函式 341
13.6.4 讀寫二進制模式 342
13.6.5 隨機存取操作 343
13.7 讀取和寫入字元串流 345
13.8 為你的類重載移位運算符 348
13.9 示例應用程式:文本檔案閱讀器 350
練習 351
第14章 C++ STL string類 352
14.1 string類概述 352
14.2 string類的構造函式 353
14.3 字元串類運算符 355
14.3.1 字元串賦值 355
14.3.2 字元串連線 355
14.3.3 字元串比較 356
14.3.4 字元串索引 357
14.4 成員函式概述 358
14.5 成員函式詳解 359
14.6 string類的疊代器 372
14.6.1 標準(正向)疊代器 372
14.6.2 反向疊代器 374
14.6.3 疊代算法 375
14.6.4 使用疊代器的成員函式 375
14.7 寬字元串類(basic_string) 377
第15章 STL(向量,雙端佇列)簡介 378
15.1 容器模板簡介 378
15.2 介紹疊代器 380
15.3 向量模板 381
15.3.1 向量疊代器 382
15.3.2 向量構造函式 384
15.3.3 列表初始化(C++11) 385
15.3.4 向量函式簡明摘要 385
15.3.5 向量成員函式詳解 385
15.4 雙端佇列模板 392
15.4.1 雙端佇列疊代器 394
15.4.2 雙端佇列構造函式 394
15.4.3 雙端佇列函式簡介 395
15.4.4 雙端佇列函式詳解 396
15.5 位集合模板 402
15.5.1 位集合構造函式 403
15.5.2 位集合成員函式 403
15.6 示例應用程式:字母文本檔案管理 405
練習 407
第16章 STL序列容器(List) 408
16.1 排序元素(嚴格弱序) 408
16.2 列表模板 409
16.2.1 列表疊代器 410
16.2.2 列表構造函式 412
16.2.3 列表函式簡明摘要 413
16.2.4 列表成員函式詳解 414
16.3 棧模板 423
16.4 佇列模板 426
16.5 優先佇列模板 428
16.5.1 優先佇列構造函式 430
16.5.2 優先佇列成員函式 431
16.6 示例應用程式:找出中位數 432
演習 433
第17章 STL關聯容器(map、set) 435
17.1 pair模板 435
17.2 映射模板 437
17.2.1 填充映射 438
17.2.2 查找現有映射的元素 440
17.2.3 一個更複雜的記錄類型 441
17.2.4 遍歷映射 445
17.2.5 映射實現:二叉樹 445
17.2.6 映射構造函式 447
17.2.7 映射函式簡明摘要 448
17.2.8 映射成員函式詳解 449
17.3 集合模板 455
17.3.1 填充集合 456
17.3.2 查找集合中的一個元素 457
17.3.3 集合構造函式 457
17.3.4 集合函式簡明摘要 459
17.3.5 集合成員函式詳解 460
17.4 多重映射模板 465
17.5 多重集合模板 467
17.6 無序容器(C++11) 469
17.6.1 無序容器:基本概念 469
17.6.2 調優散列表的性能 473
17.6.3 編寫你自己的散列和相等函式 475
17.7 示例應用程式:猜單詞遊戲 477
練習 479
第18章 STL算法 480
18.1 STL算法:基本概念 480
18.2 使用lambda函式(C++11) 482
18.3 算法和疊代器 484
18.4 插入疊代器 485
18.5 示例應用程式:尋找中位數 486
18.6 算法簡明摘要 487
18.6.1 唯讀算法 488
18.6.2 修改算法 489
18.6.3 排序和重新排序算法 489
18.6.4 堆算法 490
18.6.5 數值算法 492
18.6.6 預定義的函式對象 492
18.7 算法詳解 494
第19章 C++11的隨機化庫 527
19.1 隨機化中的問題 527
19.1.1 有偏差的分布問題 527
19.1.2 偽隨機序列的問題 528
19.1.3 獲取種子的問題 528
19.2 一個更好的隨機化方案 529
19.3 常見的引擎 531
19.4 常用的分布 532
19.5 對引擎的操作 535
19.6 對分布的操作 536
19.7 示例應用程式:骰子遊戲 537
練習 539
第20章 C++11的正則表達式庫 540
20.1 C++11的正則表達式概述 540
20.2 處理轉義序列(\) 543
20.3 構造一個正則表達式字元串 544
20.3.1 匹配字元 544
20.3.2 模式修飾符 547
20.3.3 重複組 548
20.3.4 字元類 549
20.4 匹配和查找函式 550
20.5 “查找全部”或疊代查找 552
20.6 替換文本 553
20.7 字元串標記化 555
20.8 捕獲正則表達式異常 556
20.9 示例應用程式:RPN計算器 557
練習 559
附錄A 對右值引用(C++11)的輕鬆介紹 561
A.1 複製的麻煩 561
A.2 移動語義:C++11來救援 564
A.3 在用戶的String類中的右值引用 566
A.4 驗證運行時性能的提高 568
A.5 右值和包含的對象 569
A.6 引用:右值和左值再思考 570
附錄B C++11新功能概述 572
B.1 對象結構改進 572
B.2 其他核心語言增強功能 573
B.3 其他新關鍵字 574
B.4 標準庫的擴展 574
附錄C ASCII碼 576