關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
21天學(xué)通C++(第9版)
這是一本經(jīng)典的C++編程入門指南,第9版針對(duì)C++20標(biāo)準(zhǔn)進(jìn)行了內(nèi)容上的全面更新,旨在幫助讀者編寫(xiě)更快、更簡(jiǎn)單、更可靠的C++代碼,并掌握C++和面向?qū)ο缶幊痰幕驹怼?本書(shū)通過(guò)大量短小精悍的程序詳細(xì)而全面地闡述了C++的基本概念和技術(shù)應(yīng)用,以及C++20新增的功能,這些內(nèi)容被組織成結(jié)構(gòu)合理、聯(lián)系緊密的章節(jié)。每章都提供了示例程序清單,并輔以示例輸出和代碼分析,以進(jìn)一步闡述該章的主題。為幫助讀者鞏固所學(xué)的內(nèi)容,每章末尾都提供了常見(jiàn)問(wèn)題相關(guān)答案以及作業(yè)。讀者可對(duì)照附錄E提供的答案,了解自己對(duì)所學(xué)內(nèi)容的掌握程度。
本書(shū)面向C++初學(xué)者,不要求讀者有C語(yǔ)言方面的背景知識(shí),可作為高等院校教授C++課程的教材,也可供初學(xué)者自學(xué)C++時(shí)使用。
1.本書(shū)詳細(xì)分析了近300個(gè)帶有詳細(xì)注釋的代碼示例,覆蓋C++20和C++23語(yǔ)言特性,并描述了其內(nèi)部工作原理。無(wú)論是初學(xué)者還是專業(yè)程序員,都能了解到本書(shū)所具有的寶貴價(jià)值。
2.本書(shū)通過(guò)科學(xué)合理的內(nèi)容安排讓讀者在21天內(nèi)學(xué)通C++,符合讀者期望快速入門C++的心理。
3.本書(shū)通過(guò)“注意”“警告”“提示”“黑名單”“白名單”等板塊設(shè)計(jì)讓讀者輕松愉快地學(xué)會(huì)C++。
4.本書(shū)提供可下載的代碼示例,方便讀者親手實(shí)踐。
悉達(dá)多·饒(Siddhartha Rao)是SAP SE公司主管產(chǎn)品安全的副總裁,其作品享譽(yù)全球,并被翻譯成法語(yǔ)和中文。他深信C++發(fā)展快速,并致力于為機(jī)器學(xué)習(xí)和人工智能領(lǐng)域的發(fā)展添磚加瓦。
第 一部分 基礎(chǔ)知識(shí)
第 1章 緒論 2
1.1 C++簡(jiǎn)史 2
1.1.1 與C語(yǔ)言的關(guān)系 2
1.1.2 C++的優(yōu)點(diǎn) 2
1.1.3 C++標(biāo)準(zhǔn)的發(fā)展歷程 3
1.1.4 哪些人使用C++程序 3
1.2 編寫(xiě)C++應(yīng)用程序 3
1.2.1 生成可執(zhí)行文件的步驟 3
1.2.2 分析并修復(fù)錯(cuò)誤 4
1.2.3 集成開(kāi)發(fā)環(huán)境 4
1.2.4 編寫(xiě)第 一個(gè)C++應(yīng)用程序 4
1.2.5 生成并執(zhí)行第 一個(gè)C++應(yīng)用程序 5
1.2.6 理解編譯錯(cuò)誤 7
1.3 C++20新增的功能 7
1.4 總結(jié) 8
1.5 問(wèn)與答 8
1.6 作業(yè) 8
1.6.1 測(cè)驗(yàn) 8
1.6.2 練習(xí) 9
第 2章 C++程序的組成部分 10
2.1 Hello World程序的組成部分 10
2.1.1 預(yù)處理器編譯指令#include 10
2.1.2 程序的主體:main( ) 11
2.1.3 返回值 12
2.2 命名空間的概念 12
2.3 C++代碼中的注釋 13
2.4 C++函數(shù) 14
2.5 使用std::cin和std::cout執(zhí)行基本輸入輸出操作 16
2.6 總結(jié) 17
2.7 問(wèn)與答 17
2.8 作業(yè) 17
2.8.1 測(cè)驗(yàn) 18
2.8.2 練習(xí) 18
第3章 使用變量和常量 19
3.1 什么是變量 19
3.1.1 內(nèi)存和尋址概述 19
3.1.2 聲明變量以訪問(wèn)和使用內(nèi)存 19
3.1.3 聲明并初始化多個(gè)類型相同的變量 21
3.1.4 理解變量的作用域 21
3.1.5 全局變量 22
3.1.6 命名約定 24
3.2 編譯器支持的常見(jiàn)C++變量類型 24
3.2.1 使用bool變量存儲(chǔ)布爾值 25
3.2.2 使用char變量存儲(chǔ)字符 25
3.2.3 有符號(hào)整數(shù)和無(wú)符號(hào)整數(shù)的概念 26
3.2.4 有符號(hào)整型short、int、long和long long 26
3.2.5 無(wú)符號(hào)整型unsigned short、unsigned int、unsigned long和unsigned long long 26
3.2.6 選擇正確的數(shù)據(jù)類型以免發(fā)生溢出錯(cuò)誤 27
3.2.7 浮點(diǎn)類型float和double 28
3.3 使用sizeof確定變量的長(zhǎng)度 28
3.4 使用auto自動(dòng)推斷類型 30
3.5 使用typedef替換變量類型 31
3.6 什么是常量 31
3.6.1 字面常量 32
3.6.2 使用const將變量聲明為常量 32
3.6.3 使用constexpr定義常量表達(dá)式 33
3.6.4 使用consteval定義C++20即時(shí)函數(shù) 34
3.6.5 枚舉 35
3.6.6 域限定枚舉 37
3.6.7 使用#define定義常量 37
3.7 不能用作常量或變量名的關(guān)鍵字 37
3.8 總結(jié) 38
3.9 問(wèn)與答 38
3.10 作業(yè) 39
3.10.1 測(cè)驗(yàn) 39
3.10.2 練習(xí) 40
第4章 管理數(shù)組和字符串 41
4.1 什么是數(shù)組 41
4.1.1 為何需要數(shù)組 41
4.1.2 聲明和初始化靜態(tài)數(shù)組 42
4.1.3 數(shù)組中的數(shù)據(jù)是如何存儲(chǔ)的 42
4.1.4 訪問(wèn)存儲(chǔ)在數(shù)組中的數(shù)據(jù) 43
4.1.5 修改存儲(chǔ)在數(shù)組中的數(shù)據(jù) 44
4.2 多維數(shù)組 46
4.2.1 聲明和初始化多維數(shù)組 46
4.2.2 訪問(wèn)多維數(shù)組中的元素 47
4.3 動(dòng)態(tài)數(shù)組 48
4.4 C風(fēng)格字符串 49
4.5 C++字符串:使用std::string 51
4.6 總結(jié) 52
4.7 問(wèn)與答 53
4.8 作業(yè) 53
4.8.1 測(cè)驗(yàn) 53
4.8.2 練習(xí) 53
第5章 使用表達(dá)式、語(yǔ)句和運(yùn)算符 54
5.1 語(yǔ)句 54
5.2 復(fù)合語(yǔ)句(語(yǔ)句塊) 55
5.3 使用運(yùn)算符 55
5.3.1 賦值運(yùn)算符(=) 55
5.3.2 理解左值和右值 55
5.3.3 加法運(yùn)算符(+)、減法運(yùn)算符( )、乘法運(yùn)算符(*)、除法運(yùn)算符(/)和求模運(yùn)算符(%) 55
5.3.4 遞增運(yùn)算符(++)和遞減運(yùn)算符( ) 56
5.3.5 使用前綴還是后綴 57
5.3.6 相等運(yùn)算符(==)和不等運(yùn)算符(!=) 58
5.3.7 關(guān)系運(yùn)算符 58
5.3.8 C++20三向比較運(yùn)算符 60
5.3.9 邏輯運(yùn)算NOT、AND、OR和XOR 62
5.3.10 使用C++邏輯運(yùn)算符!、 &&和|| 63
5.3.11 按位運(yùn)算符~、&、|和^ 66
5.3.12 按位右移運(yùn)算符(>>)和左移 運(yùn)算符(<<) 67
5.3.13 復(fù)合賦值運(yùn)算符 68
5.3.14 使用運(yùn)算符sizeof( )確定特定類型 變量占用的內(nèi)存量 70
5.3.15 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 71
5.4 總結(jié) 72
5.5 問(wèn)與答 72
5.6 作業(yè) 73
5.6.1 測(cè)驗(yàn) 73
5.6.2 練習(xí) 73
第6章 控制程序流程 74
6.1 使用if...else有條件地執(zhí)行 74
6.1.1 使用if…else進(jìn)行條件編程 75
6.1.2 有條件地執(zhí)行語(yǔ)句塊 76
6.1.3 嵌套if語(yǔ)句 78
6.1.4 使用switch-case進(jìn)行條件處理 81
6.1.5 使用運(yùn)算符 :進(jìn)行條件處理 83
6.2 在循環(huán)中執(zhí)行代碼 84
6.2.1 不成熟的goto循環(huán) 85
6.2.2 while循環(huán) 86
6.2.3 do…while循環(huán) 88
6.2.4 for循環(huán) 89
6.2.5 基于范圍的for循環(huán) 91
6.3 使用continue和break修改循環(huán)的行為 93
6.3.1 不結(jié)束的循環(huán)——無(wú)限循環(huán) 93
6.3.2 控制無(wú)限循環(huán) 94
6.4 編寫(xiě)嵌套循環(huán) 96
6.4.1 使用嵌套循環(huán)遍歷多維數(shù)組 97
6.4.2 使用嵌套循環(huán)計(jì)算斐波那契數(shù)列 98
6.5 總結(jié) 99
6.6 問(wèn)與答 100
6.7 作業(yè) 100
6.7.1 測(cè)驗(yàn) 100
6.7.2 練習(xí) 100
第7章 使用函數(shù)組織代碼 102
7.1 為何需要函數(shù) 102
7.1.1 函數(shù)原型是什么 103
7.1.2 函數(shù)定義是什么 104
7.1.3 函數(shù)調(diào)用和實(shí)參是什么 104
7.1.4 編寫(xiě)接收多個(gè)參數(shù)的函數(shù) 104
7.1.5 編寫(xiě)沒(méi)有參數(shù)和返回值的函數(shù) 105
7.1.6 帶默認(rèn)值的函數(shù)參數(shù) 106
7.1.7 遞歸函數(shù)——調(diào)用自己的函數(shù) 108
7.1.8 包含多條return語(yǔ)句的函數(shù) 109
7.2 使用函數(shù)處理不同類型的數(shù)據(jù) 110
7.2.1 函數(shù)重載 110
7.2.2 將數(shù)組傳遞給函數(shù) 112
7.2.3 按引用傳遞參數(shù) 113
7.3 微處理器如何處理函數(shù)調(diào)用 114
7.3.1 內(nèi)聯(lián)函數(shù) 115
7.3.2 自動(dòng)推斷返回類型 116
7.3.3 lambda函數(shù) 117
7.4 總結(jié) 118
7.5 問(wèn)與答 118
7.6 作業(yè) 119
7.6.1 測(cè)驗(yàn) 119
7.6.2 練習(xí) 119
第8章 闡述指針和引用 121
8.1 什么是指針 121
8.1.1 聲明指針 122
8.1.2 使用引用運(yùn)算符(&)獲取變量的地址 122
8.1.3 使用指針存儲(chǔ)地址 123
8.1.4 使用解除引用運(yùn)算符(*)訪問(wèn)指向的數(shù)據(jù) 124
8.1.5 指針占用的內(nèi)存量 126
8.2 動(dòng)態(tài)內(nèi)存分配 127
8.2.1 使用new和delete動(dòng)態(tài)地分配和釋放內(nèi)存 128
8.2.2 將遞增和遞減運(yùn)算符(++和 )用于指針的結(jié)果 130
8.2.3 將關(guān)鍵字const用于指針 132
8.2.4 將指針傳遞給函數(shù) 133
8.2.5 數(shù)組和指針的類似之處 134
8.3 使用指針時(shí)常犯的編程錯(cuò)誤 136
8.3.1 內(nèi)存泄漏 136
8.3.2 指針指向無(wú)效的內(nèi)存單元 136
8.3.3 懸浮指針(也叫迷途或失控指針) 137
8.3.4 檢查使用new發(fā)出的分配請(qǐng)求是否得到滿足 138
8.4 指針編程最佳實(shí)踐 140
8.5 引用是什么 140
8.5.1 是什么讓引用很有用 141
8.5.2 將關(guān)鍵字const用于引用 143
8.5.3 按引用向函數(shù)傳遞參數(shù) 143
8.6 總結(jié) 144
8.7 問(wèn)與答 144
8.8 作業(yè) 145
8.8.1 測(cè)驗(yàn) 145
8.8.2 練習(xí) 145
第二部分 C++面向?qū)ο缶幊袒A(chǔ)
第9章 類和對(duì)象 148
9.1 類和對(duì)象 148
9.1.1 聲明類 148
9.1.2 作為類實(shí)例的對(duì)象 149
9.1.3 使用句點(diǎn)運(yùn)算符(.)訪問(wèn)成員 149
9.1.4 使用指針運(yùn)算符(->)訪問(wèn)成員 150
9.2 關(guān)鍵字public和private 151
9.3 構(gòu)造函數(shù) 154
9.3.1 聲明和實(shí)現(xiàn)構(gòu)造函數(shù) 154
9.3.2 何時(shí)及如何使用構(gòu)造函數(shù) 155
9.3.3 重載構(gòu)造函數(shù) 156
9.3.4 沒(méi)有默認(rèn)構(gòu)造函數(shù)的類 157
9.3.5 帶默認(rèn)值的構(gòu)造函數(shù)參數(shù) 158
9.3.6 包含初始化列表的構(gòu)造函數(shù) 159
9.4 析構(gòu)函數(shù) 161
9.4.1 聲明和實(shí)現(xiàn)析構(gòu)函數(shù) 161
9.4.2 何時(shí)及如何使用析構(gòu)函數(shù) 162
9.5 復(fù)制構(gòu)造函數(shù) 163
9.5.1 淺復(fù)制及其存在的問(wèn)題 164
9.5.2 使用復(fù)制構(gòu)造函數(shù)確保深復(fù)制 166
9.5.3 使用移動(dòng)構(gòu)造函數(shù)改善性能 169
9.6 構(gòu)造函數(shù)和析構(gòu)函數(shù)的其他用途 170
9.6.1 不允許復(fù)制的類 170
9.6.2 只能有一個(gè)實(shí)例的單例類 170
9.6.3 禁止在棧中實(shí)例化的類 172
9.6.4 使用構(gòu)造函數(shù)進(jìn)行類型轉(zhuǎn)換 174
9.7 this指針 176
9.8 將sizeof( )用于類 176
9.9 結(jié)構(gòu)不同于類的地方 178
9.10 聲明友元 179
9.11 共用體:一種特殊的數(shù)據(jù)存儲(chǔ)機(jī)制 180
9.11.1 聲明共用體 180
9.11.2 在什么情況下使用共用體 181
9.12 對(duì)類和結(jié)構(gòu)使用聚合初始化 183
9.13 總結(jié) 186
9.14 問(wèn)與答 186
9.15 作業(yè) 187
9.15.1 測(cè)驗(yàn) 187
9.15.2 練習(xí) 187
第 10章 實(shí)現(xiàn)繼承 188
10.1 繼承基礎(chǔ) 188
10.1.1 繼承和派生 189
10.1.2 C++派生語(yǔ)法 189
10.1.3 訪問(wèn)限定符protected 191
10.1.4 基類初始化——向基類傳遞參數(shù) 193
10.1.5 在派生類中覆蓋基類的方法 195
10.1.6 調(diào)用基類中被覆蓋的方法 197
10.1.7 在派生類中調(diào)用基類的方法 197
10.1.8 在派生類中隱藏基類的方法 199
10.1.9 構(gòu)造順序 201
10.1.10 析構(gòu)順序 201
10.2 私有繼承 203
10.3 保護(hù)繼承 205
10.4 切除問(wèn)題 207
10.5 多繼承 208
10.6 使用final禁止繼承 210
10.7 總結(jié) 210
10.8 問(wèn)與答 211
10.9 作業(yè) 211
10.9.1 測(cè)驗(yàn) 211
10.9.2 練習(xí) 211
第 11章 多態(tài) 213
11.1 多態(tài)基礎(chǔ) 213
11.1.1 為何需要多態(tài)行為 213
11.1.2 使用虛函數(shù)實(shí)現(xiàn)多態(tài)行為 214
11.1.3 為何需要虛構(gòu)造函數(shù) 216
11.1.4 虛函數(shù)的工作原理——理解虛函數(shù)表 219
11.1.5 抽象基類和純虛函數(shù) 222
11.2 使用虛繼承解決菱形問(wèn)題 224
11.3 使用限定符override明確覆蓋意圖 227
11.4 使用final來(lái)禁止覆蓋函數(shù) 228
11.5 可將復(fù)制構(gòu)造函數(shù)聲明為虛函數(shù)嗎 229
11.6 總結(jié) 232
11.7 問(wèn)與答 232
11.8 作業(yè) 233
11.8.1 測(cè)驗(yàn) 233
11.8.2 練習(xí) 233
第 12章 運(yùn)算符類型與運(yùn)算符重載 234
12.1 C++運(yùn)算符 234
12.2 單目運(yùn)算符 235
12.2.1 單目運(yùn)算符的類型 235
12.2.2 單目遞增與單目遞減運(yùn)算符 235
12.2.3 轉(zhuǎn)換運(yùn)算符 238
12.2.4 解除引用運(yùn)算符(*)和成員選擇 運(yùn)算符(->) 240
12.3 雙目運(yùn)算符 241
12.3.1 雙目運(yùn)算符的類型 242
12.3.2 雙目加法與雙目減法運(yùn)算符 242
12.3.3 實(shí)現(xiàn)運(yùn)算符+=與 = 244
12.3.4 重載相等運(yùn)算符(==)和不等 運(yùn)算符(!=) 245
12.3.5 重載運(yùn)算符<、>、<=和>= 247
12.3.6 C++20三向比較運(yùn)算符 (<=>) 250
12.3.7 重載復(fù)制賦值運(yùn)算符(=) 252
12.3.8 索引運(yùn)算符 255
12.4 函數(shù)運(yùn)算符( ) 257
12.5 用于高性能編程的移動(dòng)構(gòu)造函數(shù)和 移動(dòng)賦值運(yùn)算符 258
12.5.1 不必要的復(fù)制帶來(lái)的問(wèn)題 258
12.5.2 聲明移動(dòng)構(gòu)造函數(shù)和移動(dòng)賦值 運(yùn)算符 258
12.6 用戶定義的字面量 263
12.7 不能重載的運(yùn)算符 265
12.8 總結(jié) 265
12.9 問(wèn)與答 265
12.10 作業(yè) 266
12.10.1 測(cè)驗(yàn) 266
12.10.2 練習(xí) 266
第 13章 類型轉(zhuǎn)換運(yùn)算符 267
13.1 為何需要類型轉(zhuǎn)換 267
13.2 為何有些C++程序員不喜歡C風(fēng)格 類型轉(zhuǎn)換 268
13.3 C++類型轉(zhuǎn)換運(yùn)算符 268
13.3.1 使用static_cast 268
13.3.2 使用dynamic_cast和運(yùn)行階段類型識(shí)別 269
13.3.3 使用reinterpret_cast 272
13.3.4 使用const_cast 272
13.4 C++類型轉(zhuǎn)換運(yùn)算符存在的問(wèn)題 273
13.5 總結(jié) 274
13.6 問(wèn)與答 274
13.7 作業(yè) 275
13.7.1 測(cè)驗(yàn) 275
13.7.2 練習(xí) 275
第 14章 宏和模板簡(jiǎn)介 276
14.1 預(yù)處理器與編譯器 276
14.2 使用#define定義常量 276
14.3 使用#define編寫(xiě)宏函數(shù) 279
14.3.1 為什么要使用括號(hào) 280
14.3.2 使用assert宏驗(yàn)證表達(dá)式 281
14.3.3 使用宏函數(shù)的優(yōu)點(diǎn)和缺點(diǎn) 282
14.4 模板簡(jiǎn)介 283
14.4.1 模板聲明語(yǔ)法 283
14.4.2 各種類型的模板聲明 283
14.4.3 模板函數(shù) 284
14.4.4 模板與類型安全 285
14.4.5 模板類 286
14.4.6 聲明包含多個(gè)參數(shù)的模板 286
14.4.7 聲明包含默認(rèn)參數(shù)的模板 287
14.4.8 一個(gè)模板類示例:HoldsPair 287
14.4.9 模板的實(shí)例化和具體化 289
14.4.10 模板類和靜態(tài)成員 290
14.4.11 參數(shù)數(shù)量可變的模板 291
14.4.12 使用static_assert執(zhí)行編譯階段 檢查 294
14.4.13 在實(shí)際C++編程中使用模板 295
14.5 總結(jié) 295
14.6 問(wèn)與答 296
14.7 作業(yè) 296
14.7.1 測(cè)驗(yàn) 296
14.7.2 練習(xí) 296
第三部分 學(xué)習(xí)標(biāo)準(zhǔn)模板庫(kù)
第 15章 標(biāo)準(zhǔn)模板庫(kù)簡(jiǎn)介 298
15.1 STL容器 298
15.1.1 順序容器 298
15.1.2 關(guān)聯(lián)容器 299
15.1.3 容器適配器 299
15.2 STL迭代器 300
15.3 STL算法 300
15.4 使用迭代器在容器和算法之間交互 300
15.5 選擇正確的容器 302
15.6 STL字符串類 303
15.7 總結(jié) 303
15.8 問(wèn)與答 303
15.9 作業(yè) 304
第 16章 STL string類 305
16.1 為何需要字符串操作類 305
16.2 使用STL string類 306
16.2.1 實(shí)例化和復(fù)制STL string 306
16.2.2 訪問(wèn)std::string的字符內(nèi)容 308
16.2.3 拼接字符串 310
16.2.4 在string中查找字符或子 字符串 311
16.2.5 截短STL string 312
16.2.6 字符串反轉(zhuǎn) 314
16.2.7 字符串的大小寫(xiě)轉(zhuǎn)換 315
16.3 基于模板的STL string實(shí)現(xiàn) 316
16.4 std::string中的operator ""s 316
16.5 使用C++20改進(jìn)了的
std::string_view 317
16.6 總結(jié) 318
16.7 問(wèn)與答 319
16.8 作業(yè) 319
16.8.1 測(cè)驗(yàn) 319
16.8.2 練習(xí) 319
第 17章 STL動(dòng)態(tài)數(shù)組類 320
17.1 std::vector的特點(diǎn) 320
17.2 典型的vector操作 320
17.2.1 實(shí)例化vector 320
17.2.2 使用push_back( )在vector末尾 插入元素 322
17.2.3 列表初始化 322
17.2.4 使用insert( )在指定位置 插入元素 323
17.2.5 使用數(shù)組語(yǔ)法訪問(wèn)vector中的 元素 325
17.2.6 使用指針語(yǔ)法訪問(wèn)vector中的 元素 326
17.2.7 刪除vector中的元素 327
17.3 理解大小和容量 328
17.4 STL deque 類 329
17.5 總結(jié) 332
17.6 問(wèn)與答 332
17.7 作業(yè) 333
17.7.1 測(cè)驗(yàn) 333
17.7.2 練習(xí) 333
第 18章 STL list和forward_list 334
18.1 std::list的特點(diǎn) 334
18.2 基本的list操作 334
18.2.1 實(shí)例化std::list對(duì)象 334
18.2.2 在list開(kāi)頭或末尾插入元素 336
18.2.3 在list中間插入元素 337
18.2.4 刪除list中的元素 339
18.3 對(duì)list中的元素進(jìn)行反轉(zhuǎn)和排序 340
18.3.1 使用list::reverse( )反轉(zhuǎn)元素的 排列順序 340
18.3.2 對(duì)元素進(jìn)行排序 341
18.3.3 對(duì)包含對(duì)象的list進(jìn)行排序以及 刪除其中的元素 343
18.3.4 std::forward_list 345
18.4 總結(jié) 347
18.5 問(wèn)與答 347
18.6 作業(yè) 348
18.6.1 測(cè)驗(yàn) 348
18.6.2 練習(xí) 348
第 19章 STL set和multiset 349
19.1 簡(jiǎn)介 349
19.2 STL set和multiset的基本操作 349
19.2.1 實(shí)例化std::set對(duì)象 350
19.2.2 在set或multiset中插入 元素 351
19.2.3 在STL set或multiset中查找 元素 353
19.2.4 刪除STL set或multiset中的 元素 354
19.3 使用STL set和multiset的優(yōu)缺點(diǎn) 358
19.4 總結(jié) 360
19.5 問(wèn)與答 361
19.6 作業(yè) 361
19.6.1 測(cè)驗(yàn) 361
19.6.2 練習(xí) 361
第 20章 STL map和multimap 362
20.1 STL映射類簡(jiǎn)介 362
20.2 STL map和multimap的基本操作 363
20.2.1 實(shí)例化std::map和 std::multimap 363
20.2.2 在STL map或multimap中 插入元素 364
20.2.3 在STL map中查找元素 366
20.2.4 在STL multimap中查找元素 368
20.2.5 刪除STL map或multimap中的 元素 369
20.3 提供自定義的排序謂詞 371
20.4 基于鍵值對(duì)的STL散列表容器 374
20.4.1 散列表的工作原理 374
20.4.2 使用unordered_map和 unordered_multimap 374
20.5 總結(jié) 377
20.6 問(wèn)與答 378
20.7 作業(yè) 378
20.7.1 測(cè)驗(yàn) 378
20.7.2 練習(xí) 379
第四部分 lambda表達(dá)式和STL算法
第 21章 理解函數(shù)對(duì)象 382
21.1 函數(shù)對(duì)象與謂詞的概念 382
21.2 函數(shù)對(duì)象的典型用途 382
21.2.1 一元函數(shù) 382
21.2.2 一元謂詞 386
21.2.3 二元函數(shù) 387
21.2.4 二元謂詞 389
21.3 總結(jié) 391
21.4 問(wèn)與答 392
21.5 作業(yè) 392
21.5.1 測(cè)驗(yàn) 392
21.5.2 練習(xí) 392
第 22章 lambda表達(dá)式 393
22.1 lambda表達(dá)式是什么 393
22.2 如何定義lambda表達(dá)式 394
22.2.1 捕獲變量 394
22.2.2 參數(shù) 394
22.2.3 返回類型 395
22.3 一元函數(shù)對(duì)應(yīng)的lambda表達(dá)式 395
22.4 一元謂詞對(duì)應(yīng)的lambda表達(dá)式 396
22.5 通過(guò)捕獲列表接收狀態(tài)的lambda 表達(dá)式 397
22.6 二元函數(shù)對(duì)應(yīng)的lambda表達(dá)式 399
22.7 二元謂詞對(duì)應(yīng)的lambda表達(dá)式 400
22.8 總結(jié) 402
22.9 問(wèn)與答 402
22.10 作業(yè) 402
22.10.1 測(cè)驗(yàn) 403
22.10.2 練習(xí) 403
第 23章 STL算法 404
23.1 什么是STL算法 404
23.2 STL算法的分類 404
23.2.1 非變序算法 404
23.2.2 變序算法 405
23.3 使用STL算法 406
23.3.1 根據(jù)值或條件查找元素 406
23.3.2 計(jì)算包含給定值或滿足給定條件的元素?cái)?shù) 408
23.3.3 在集合中搜索元素或序列 409
23.3.4 將容器中的元素初始化為 指定值 411
23.3.5 使用std::generate( )將元素設(shè)置為運(yùn)行階段生成的值 412
23.3.6 使用for_each( )處理指定范圍內(nèi)的元素 414
23.3.7 使用std::transform( )對(duì)范圍進(jìn)行變換 415
23.3.8 復(fù)制和刪除操作 417
23.3.9 替換值以及替換滿足給定條件的元素 420
23.3.10 對(duì)集合進(jìn)行排序以及在有序集合中搜索和刪除重復(fù)元素 421
23.3.11 將范圍分區(qū) 423
23.3.12 在有序集合中插入元素 424
23.3.13 使用C++20引入的std:: accumulate( )執(zhí)行累積操作 426
23.4 C++20約束算法 426
23.5 總結(jié) 428
23.6 問(wèn)與答 428
23.7 作業(yè) 429
23.7.1 測(cè)驗(yàn) 429
23.7.2 練習(xí) 429
第 24章 自適應(yīng)容器:棧和隊(duì)列 430
24.1 棧和隊(duì)列的行為特征 430
24.1.1 棧 430
24.1.2 隊(duì)列 431
24.2 使用STL stack類 431
24.2.1 實(shí)例化stack 431
24.2.2 stack的成員函數(shù) 432
24.2.3 使用push( )和pop( )在棧頂插入和刪除元素 433
24.3 使用STL queue類 434
24.3.1 實(shí)例化queue 434
24.3.2 queue的成員函數(shù) 435
24.3.3 使用push( )在隊(duì)尾插入以及使用pop( )從隊(duì)首刪除 436
24.4 使用STL優(yōu)先級(jí)隊(duì)列 437
24.4.1 實(shí)例化priority_queue類 437
24.4.2 priority_queue的成員函數(shù) 438
24.4.3 使用push( )在priority_queue末尾插入以及使用pop( )在priority_queue開(kāi)頭刪除 439
24.5 總結(jié) 441
24.6 問(wèn)與答 441
24.7 作業(yè) 441
24.7.1 測(cè)驗(yàn) 441
24.7.2 練習(xí) 441
第 25章 使用STL位標(biāo)志 442
25.1 bitset類 442
25.2 使用std::bitset及其成員 443
25.2.1 std::bitset中很有用的運(yùn)算符 443
25.2.2 std::bitset的成員方法 444
25.3 vector
你還可能感興趣
我要評(píng)論
|