C/C++ 函數與算法速查寶典

陳銳

  • 出版商: 人民郵電
  • 出版日期: 2022-09-01
  • 售價: $539
  • 貴賓價: 9.5$512
  • 語言: 簡體中文
  • 頁數: 376
  • ISBN: 711558835X
  • ISBN-13: 9787115588357
  • 相關分類: C++ 程式語言
  • 立即出貨

  • C/C++ 函數與算法速查寶典-preview-1
  • C/C++ 函數與算法速查寶典-preview-2
C/C++ 函數與算法速查寶典-preview-1

買這商品的人也買了...

商品描述

本書系統地講解了C和C++中的常用函數及算法,其內容分為3篇,共29章,包括近300個常用函數和九大類算法,還以實例形式講解了Visual Studio調試技術。其中,在C語言函數篇,對每一個函數的講解都包含了函數原型、功能、參數、返回值、範例、解析等內容,部分函數會通過綜合實例來輔助理解。在算法篇,每個算法採用相應實例進行講解,包含問題、分析、實現、說明等內容。在C++輸入/輸出流與容器篇,針對每個類庫選取了最常用的函數,按構造類函數、存取類函數、操作類函數等類別從函數原型、函數功能、函數參數、函數返回值、函數範例、函數解析等方面進行了介紹。

本書適合學習C/C++函數和算法的初、中級開發人員,愛好者和大、中專院校學生使用。對於經常使用C/C++進行開發的程序員,本書更是一本難得的案頭常備工具書。

作者簡介

1.陈锐,硕士生导师,中国人工智能学会情感智能专委会委员、中国图象图形学学会人机交互专委会委员。目前从事数据结构与算法方面的教学工作,以及人工智能、推荐系统方面的科研工作。出版多部作品,其中两部获批省部级规划教材立项建设。

 

2.孙玉胜,硕士生导师,电子书信息工程国家专业建设点负责人,“Python 程序设计”省级课程负责人。目前从事电子信息、软件工程专业教学和科研工作。

 

3.梁辉,教授,博士生导师,河南省计算机动画实现技术国际联合实验室主任,数字媒体技术专业带头人,“计算机动画与虚拟现实”科技创新团队带头人。目前从事计算机动画、数字媒体技术、虚拟现实的科研工作。

目錄大綱

目  錄

 

第 1篇 C語言函數篇

第 1章 ctype.h庫函數 2

ctype.h庫函數主要包括一些字符處理函數。例如,其中的isalnum函數用來判斷是否是英文字母或數字字符,tolower函數是將大寫字母轉換為小寫字母。

1.1 字符測試函數 2

1.1.1 isalnum函數—判斷是否是英文字母或數字字符 2

1.1.2 isalpha函數—判斷是否為英文字母 3

1.1.3 isascii函數—判斷ASCII碼是否位於0~127 4

1.1.4 iscntrl函數—判斷是否是控制字符 5

1.1.5 isdigit函數—判斷是否是數字字符 6

1.1.6 isgraph函數—判斷是否是可打印字符(不包括空格) 7

1.1.7 islower函數—判斷是否是小寫英文字母 8

1.1.8 isprint函數—判斷是否是可打印字符(包括空格) 10

1.1.9 ispunct函數—判斷是否是標點符號 11

1.1.10 isspace函數—判斷是否是 空白符 12

1.1.11 isxdigit函數—判斷是否是 十六進制字符 13

1.2 字符轉換函數 15

1.2.1 tolower函數—將大寫英文字母轉換為小寫英文字母 15

1.2.2 toupper函數—將小寫英文字母轉換為大寫英文字母 16

1.2.3 toascii函數—將字符轉換為ASCII碼 17

第 2章 stdio.h庫函數 19

stdio.h庫函數主要包括常用的輸入/輸出函數。例如,其中的getch函數用來接受從鍵盤輸入的字符,printf函數用來格式化輸出數據,fprintf函數用來格式化輸出數據到指定的文件中。

2.1 字符輸入/輸出函數 19

2.1.1 getch函數和getche函數—接受從鍵盤輸入的字符 19

2.1.2 getchar函數—接受一個字符並顯示在屏幕上 20

2.1.3 gets函數—讀取一個字符串 21

2.1.4 putchar函數—在屏幕上輸出一個字符 23

2.1.5 puts函數—在屏幕上輸出一個字符串 24

2.2 格式化輸入/輸出函數 25

2.2.1 printf函數—格式化輸出數據 25

2.2.2 scanf函數—格式化輸入數據 28

2.2.3 sprintf函數—輸出格式化數據到指定的數組中 30

2.2.4 sscanf函數—從字符串讀取格式化數據 31

2.2.5 vprintf函數—在屏幕上輸出格式化變長參數列表 33

2.2.6 vscanf函數—讀取從鍵盤輸入的格式化數據 34

2.3 文件輸入/輸出函數 35

2.3.1 fgetc函數和getc函數—從文件中讀取一個字符 35

2.3.2 fgets函數—從文件中讀取多個字符 36

2.3.3 fprintf函數—格式化輸出數據到指定的文件中 38

2.3.4 fscanf函數—從文件中讀取格式化數據 39

2.3.5 fputc函數和putc函數—輸出一個字符到指定的文件中 40

2.3.6 fputs函數—輸出一個字符串到指定的文件中 42

2.3.7 fread函數—從文件中讀取一個數據塊 43

2.3.8 fwrite函數—向文件中寫入數據塊 44

2.3.9 vfprintf函數—輸出格式化數據到指定的文件 46

2.3.10 vfscanf函數—從文件中讀取 格式化數據 47

2.4 文件定位函數 48

2.4.1 fseek函數—移動文件位置指針到指定位置 49

2.4.2 ftell函數—得到文件位置指針的當前值 50

2.4.3 rewind函數—將文件位置指針移動到文件的開頭 51

2.5 文件存取操作函數 53

2.5.1 fclose函數—關閉文件 53

2.5.2 fflush函數—將緩沖區的內容寫入文件 54

2.5.3 fopen函數—打開文件 55

2.5.4 remove函數—刪除文件 57

2.5.5 rename函數—重命名文件 58

2.6 文件錯誤控制函數 60

2.6.1 clearerr函數—清除文件中的錯誤標志 60

2.6.2 feof函數—是否到了文件末尾 61

2.6.3 ferror函數—檢查文件操作是否出現了錯誤 62

2.7 文件輸入/輸出函數綜合應用範例 64

第3章 string.h庫函數 70

string.h庫函數主要包括常用的字符串操作函數。例如,其中的strcmp函數用來比較兩個字符串的大小,strcpy函數用來將一個字符串拷貝到另一個字符串中,strcat函數用來將兩個字符串連接在一起。

3.1 字符串比較函數 70

3.1.1 memcmp函數和memicmp函數—比較兩個字符串 70

3.1.2 strcmp函數和stricmp函數—比較兩個字符串 72

3.1.3 strncmp函數和strnicmp函數—比較兩個字符串 74

3.2 字符串拷貝函數 75

3.2.1 memcpy函數—拷貝n個字節到另一個數組 75

3.2.2 memmove函數—拷貝n個字節到數組中(可重疊) 76

3.2.3 strcpy函數—字符串拷貝 77

3.2.4 strncpy函數—拷貝n個字符到目的字符數組 78

3.3 字符串連接函數 80

3.3.1 strcat函數—連接兩個字符串 80

3.3.2 strncat函數—將字符串1的前n個字符連接到字符串2 81

3.4 字符串查找函數 82

3.4.1 memchr函數—在內存塊中查找字符 83

3.4.2 strchr函數—在字符串中查找字符 84

3.4.3 strstr函數—查找字符串 85

3.4.4 strtok函數—分解字符串 87

3.5 字符串轉換函數 88

3.5.1 strlwr函數—將大寫字母轉換為小寫字母 88

3.5.2 strrev函數—將字符串逆置 90

3.5.3 strupr函數—將小寫字母轉換為大寫字母 91

3.6 其他函數 92

3.6.1 memset函數—用指定的字符填充字符串 92

3.6.2 strlen函數—求字符串的長度 93

3.7 字符串函數綜合應用範例 94

第4章 stdlib.h庫函數 99

stdlib.h庫函數主要包括字符串轉換函數、動態內存管理函數、過程控制函數等。例如,atof 函數是將字符串轉換為雙精度浮點數,malloc函數是分配內存空間,abort函數用來終止當前的進程。

4.1 字符串轉換函數 99

4.1.1 atof函數—將字符串轉換為雙精度浮點數 99

4.1.2 atoi函數—將字符串轉換為整數 101

4.1.3 atol函數—將字符串轉換為長整型數 102

4.1.4 strtod函數—將字符串轉換為雙精度浮點數 103

4.1.5 strtol函數—將字符串轉換為長整型數 104

4.2 動態內存管理函數 106

4.2.1 malloc函數—分配內存空間 106

4.2.2 calloc函數—分配內存空間並初始化 107

4.2.3 free函數—釋放內存空間 109

4.2.4 realloc函數—重新分配內存空間 111

4.2.5 動態內存管理函數綜合應用範例 112

4.3 隨機數生成函數 116

4.3.1 rand函數—產生偽隨機數 116

4.3.2 srand函數—初始化隨機數發生器 117

4.4 查找函數和排序函數 118

4.4.1 bsearch函數—折半查找 118

4.4.2 qsort函數—快速排序 119

4.4.3 排序函數和查找函數綜合應用範例 121

4.5 過程控制函數 123

4.5.1 abort函數—終止當前進程 123

4.5.2 exit函數—退出當前程序 126

4.5.3 system函數—執行系統命令 127

第5章 math.h庫函數 129

math.h 庫函數主要包括三角函數、指數和對數函數、冪指數和開方函數等。例如,cos 函數用來求角度的餘弦值,log 函數用來求自然對數,pow 10函數用來求10exp的值。

5.1 三角函數 129

5.1.1 cos函數—求角度的餘弦值 129

5.1.2 sin函數—求角度的正弦值 130

5.1.3 tan函數—求角度的正切值 131

5.1.4 acos函數—求角度的反餘弦值 132

5.1.5 asin函數—求角度的反正弦值 133

5.1.6 atan函數—求角度的反正切值 134

5.2 指數和對數函數 136

5.2.1 exp函數—求以自然數e為底的指數值 136

5.2.2 log函數—求自然對數 137

5.2.3 log10函數—求對數 138

5.3 冪指數和開方函數 139

5.3.1 pow函數—求baseexp的值 139

5.3.2 pow10函數—求10exp的值 140

5.3.3 sqrt函數—求平方根 141

5.4 絕對值函數 142

5.4.1 abs函數—求整數的絕對值 143

5.4.2 fabs函數—求浮點數的絕對值 144

5.4.3 labs函數—求長整型數據的絕對值 145

5.5 其他函數 146

5.5.1 floor函數—求不大於x的最大整數 146

5.5.2 fmod函數—返回x/y的餘數 147

5.5.3 frexp函數—將浮點數分解為尾數和指數 148

5.5.4 hypot函數—根據直角邊求斜邊 149

5.5.5 modf函數—將浮點數分解為整數部分和小數部分 151

5.5.6 poly函數—計算xn的值 152

5.6 數學函數綜合應用範例 153

5.6.1 計算方程的根 153

5.6.2 求整數序列的第i個元素 155

5.6.3 求2s+2t的第 10項 156

第6章 stdarg.h庫函數 159

stdarg.h 庫函數主要包括3個用來處理變長參數的宏。例如,va_arg宏用來獲取下一個參數,va_start宏用來初始化變長參數列表。

6.1 va_arg宏 159

6.2 va_start宏 161

6.3 va_end宏 162

6.4 可變參數函數綜合應用範例 164

第7章 time.h庫函數 166

time.h 庫函數主要包括一些時間處理函數。例如,其中的 time 函數用來得到當前的時間,ctime 函數用來將時間轉換為字符串形式。

7.1 時間操作函數 166

7.1.1 clock函數—返回CPU時鐘計時單元 166

7.1.2 difftime函數—計算兩個時鐘之間的間隔 167

7.1.3 time函數—得到當前的時間 169

7.2 時間格式轉換函數 170

7.2.1 asctime函數—將時間格式轉換為字符串形式 170

7.2.2 ctime函數—將時間轉換為字符串形式 171

7.2.3 gmtime函數—返回(格林尼治)時間結構的指針 172

7.2.4 localtime函數—返回指向時間結構的指針 174

7.2.5 mktime函數—將struct tm格式的時間轉換為秒 175

7.2.6 strftime函數—將時間格式化為字符串 176

第 2篇 算法篇

第8章 排序算法 180

排序算法是程序設計中較為常用的算法。排序算法主要包括插入排序、交換排序、選擇排序、歸並排序和基數排序。

8.1 插入排序 180

8.1.1 直接插入排序 180

8.1.2 折半插入排序 182

8.1.3 希爾排序 185

8.2 交換排序 187

8.2.1 冒泡排序 188

8.2.2 快速排序 191

8.3 選擇排序 195

8.3.1 簡單選擇排序 195

8.3.2 堆排序 199

8.4 歸並排序 205

8.5 基數排序 207

第9章 查找算法 214

查找算法是程序設計中常用的算法。查找算法主要包括基於線性表的查找、基於樹的查找和哈希表的查找。

9.1 基於線性表的查找 214

9.1.1 順序查找 214

9.1.2 折半查找 216

9.1.3 分塊查找 219

9.2 基於樹的查找 222

9.2.1 基於二叉排序樹的查找操作 222

9.2.2 基於二叉排序樹的插入操作 224

9.3 哈希表的查找 227

9.3.1 構造哈希表 227

9.3.2 處理沖突 229

第 10章 遞推算法 234

遞推算法是通過不斷迭代,用舊的變量值遞推得到新值。遞推算法常用來解決重復計算的問題,如斐波那契數列、存取問題等。

10.1 順推法 234

10.1.1 斐波那契數列 234

10.1.2 將十進制數轉換為二進制數 236

10.1.3 求最大公約數和最小公倍數 238

10.1.4 質因數的分解 240

10.1.5 角谷猜想 241

10.1.6 母牛生小牛問題 242

10.1.7 楊輝三角 243

10.2 逆推法 245

10.2.1 猴子摘桃問題 245

10.2.2 存取問題 246

第 11章 枚舉算法 248

枚舉算法也稱窮舉算法,它是編程中常用的一種算法。在解決某些問題時,可能無法按照一定規律從眾多的候選解中找出正確的答案。此時,可以從眾多的候選解中逐一取出候選答案,並驗證候選答案是否為正確的解。

11.1 判斷n是否能被3、5、7整除 248

11.2 百錢買百雞 251

11.3 五猴分桃 252

11.4 求最大連續子序列和 254

11.5 填數游戲 256

11.6 誰在說謊 257

第 12章 遞歸算法 260

遞歸是自己調用自己,它將一個復雜的問題進行整體考慮,只要知道最基本問題的答案,就可以得到整個問題的答案。常見的遞歸問題有階乘、斐波那契數列和最大公約數等。

12.1 簡單遞歸 260

12.1.1 求n的階乘 260

12.1.2 斐波那契數列 263

12.1.3 求n個數中的最大者 265

12.1.4 進制轉換 266

12.1.5 求最大公約數 267

12.2 復雜遞歸 268

12.2.1 逆置字符串 268

12.2.2 和式分解 270

12.2.3 和式分解(分解出的和數非遞 增排列) 272

12.2.4 求無序序列中的第k大 元素 273

12.2.5 從1~n個自然數中任選r個 數的所有組合數 275

12.2.6 大牛生小牛問題 277

第 13章 貪心算法 279

貪心算法是一種不追求最優解,只希望找到較為滿意解的方法。貪心算法省去了為找最優解要窮盡所有可能而必須耗費的大量時間,因此,它一般可以快速得到比較滿意的解。貪心算法常以當前情況為基礎做最優選擇,而不考慮各種可能的整體情況,所以貪心算法不需要回溯。

13.1 找零錢問題 279

13.2 哈夫曼編碼 281

13.3 加油站問題 288

第 14章 回溯算法 290

回溯算法也稱為試探法,是一種選優搜索法。該方法首先暫時放棄關於問題規模大小的限制,並將問題的候選解按照某種順序逐一枚舉和檢驗。當發現當前的候選解不可能是解時,就選擇下一個候選解;倘若當前候選解只是不滿足問題的規模要求,但滿足所有其他要求時,則繼續擴大當前候選解的規模,並繼續向前試探。如果當前的候選解滿足包括問題規模在內的所有要求,則該候選解就是問題的一個解。在尋找解的過程中,放棄當前候選解,退回上一步重新選擇候選解的過程就稱為回溯。

14.1 和式分解(非遞歸實現) 290

14.2 填字游戲 293

14.3 裝箱問題 297

第 15章 分治算法 300

分治算法是將一個規模為N的問題分解為K個規模較小的子問題進行求解,這些子問題相互獨立且與原問題性質相同。求出子問題的解,就可得到原問題的解。最大子序列和、求x的n次冪、眾數問題等就是利用分治算法來實現的。

15.1 最大子序列和問題 300

15.2 求x的n次冪 302

15.3 眾數問題 304

15.4 求n個數中的最大者和最小者 306

15.5 整數劃分問題 308

15.6 大整數的乘法問題 310

第 16章 矩陣算法 315

矩陣算法主要通過分析數組中元素值的變化規律,巧妙利用數組下標與元素值之間的關系設計算法。矩陣算法往往需要交換或者存取矩陣中的某個元素,這就需要靈活掌握二維數組兩個下標的變換。

16.1 打印拉丁方陣 315

16.2 打印蛇形方陣 317

16.3 打印螺旋矩陣(非遞歸和遞歸實現) 318

16.4 打印逆螺旋矩陣 321

16.5 將矩陣旋轉90度 322

16.6 將上三方陣以行序為主序轉換為以列序為主序 324

第 17章 實用算法 327

在學習和工作中,經常會遇到一些與實際生活緊密相關的問題,這些問題也可通過算法來得到答案,從而大大提高我們的學習和工作效率。比較常見的實用算法有計算一年中的第幾天、大小寫金額轉換、微信搶紅包問題、求算術表達式的值、一元多項式的乘法、大整數乘法。

17.1 一年中的第幾天 327

17.2 大小寫金額轉換 329

17.3 將15位身份證號轉換為18位 333

17.4 微信搶紅包問題 335

17.5 求算術表達式的值 336

17.6 一元多項式的乘法 345

17.7 大整數乘法 351

17.8 迷宮求解 353

第 18章 程序調試技術 359

程序調試也是程序員必備的一項技能。對於初學者來說,通過不斷調試程序,既驗證了程序的正確性,又深入地理解了程序的算法思想,提高了調試程序的能力,為今後深入學習電腦的其他內容打下堅實的基礎。

18.1 為什麽要調試程序 359

18.2 程序調試 360

18.2.1 如何使用Visual Studio 2019開發 環境調試程序 360

18.2.2 冒泡排序程序調試 366

18.2.3 合並鏈表程序調試 371

以下章節見電子資源

第3篇 C++輸入/輸出流與容器篇

第 19章 ios_base類 379

ios_base類主要是C++輸入/輸出流的基類,它主要包含流的格式化函數。例如,flags函數用來獲取或設置流格式,precision函數用來得到/設置浮點數的精度。

19.1 flags函數—得到/設置流的格式標志 380

19.2 setf函數和unsetf函數—設置和清除流的格式標志 381

19.3 precision函數—得到/設置浮點數的精度 383

19.4 width函數—得到/設置域寬 384

第 20章 iostream類 386

iostream 類派生自istream類和 ostream類。iostream 類中的函數非常常用。例如,isotream類的對象cout用來控制輸出、cin用來控制輸入。

20.1 get函數—無格式的輸入操作 388

20.2 getline函數—接受輸入的字符串 390

20.3 ignore函數—忽略指定的字符 391

20.4 peek函數—從流中接受輸入的字符 392

20.5 read函數—讀取一個字符塊 393

20.6 putback函數—將讀取的字符返回給輸入流 394

20.7 put函數—輸出字符 396

20.8 fill函數—得到/設置填充字符 397

第 21章 文件流類 399

ifstream類、ofstream類和fstream類都是對文件進行讀/寫操作的類,我們將這些類統稱為文件流類。在C++中,要對文件進行讀/寫操作,就需要先將文件流類與文件關聯起來(一般採用open的方式或構造函數的方式),然後再利用文件流對文件進行操作。

21.1 ifstream構造函數—創建輸入流對象 400

21.2 rdbuf函數—返回指向filebuf的指針 401

21.3 is_open函數—檢測文件是否被打開 403

21.4 open函數和close函數—打開和關閉文件 404

21.5 read函數和write函數—從流中讀取數據和向流中寫入數據 406

21.6 seekg函數和tellg函數—設置和得到流的位置指針位置 407

21.7 seekp函數和tellp函數—設置和得到文件的位置指針位置 409

21.8 flush函數—刷新輸出流緩沖區 411

第 22章 string類 412

string類主要用於消除對char*的使用,以保持與現有代碼的兼容性,它還會自動進行內存管理,便於對字符進行操作,其性能比使用char*更佳。

22.1 字符串運算符函數 412

22.1.1 字符串構造函數—構造字符 串對象 412

22.1.2 =運算符函數—將字符串內容 拷貝到新字符串對象 414

22.1.3 +和+=運算符函數—連接 字符串 415

22.1.4 ==、!=、<、>、<=、>=運算符 函數—比較字符串 417

22.1.5 []運算符函數—返回string中 的某個字符 418

22.1.6 at函數—返回string中的某個 字符(範圍檢測) 419

22.2 字符串迭代器函數 420

22.2.1 begin函數和end函數—返回 第 一個字符和最後一個字符的 迭代器 420

22.2.2 rbegin函數和rend函數—返回 相對於begin函數和end函數的 反向迭代器 422

22.3 字符串長度函數 423

22.3.1 length函數和size函數—返回 字符個數 423

22.3.2 max_size函數—返回string能 容納的最大字符個數 424

22.3.3 capacity函數—返回分配的 存儲空間大小 425

22.3.4 resize函數—設置string的 長度 427

22.3.5 reserve函數—為string對象 預留空間 428

22.3.6 empty函數—判斷string是否 為空 429

22.4 字符串操作函數 430

22.4.1 insert函數—判斷string是否 為空 430

22.4.2 erase函數—清除string中的 字符 432

22.4.3 replace函數—置換string中的 字符 433

22.4.4 swap函數—交換兩個字符串 的內容 436

22.4.5 c_str函數—返回與string 等效的字符串 437

22.4.6 copy函數—取出string對象中 的指定字符 438

22.4.7 find函數—在string對象中 查找字符串 439

22.4.8 find_first_of函數和find_last_of 函數—在string中查找字符串 (部分匹配) 441

22.4.9 substr函數—生成string的 子串 442

22.4.10 stoi函數—將字符串中的 數字轉換為整數 444

第 23章 vector類 446

vector類是C++中常用的容器類,包括了一些常用的函數實現,用戶無須重新編寫函數即可使用。例如,size 函數用來表示向量的大小,empty函數用來表示向量是否為空,push_back函數用來向向量中追加元素。

23.1 構造類函數 446

23.1.1 vector的構造函數和析構 函數—創建vector對象和 釋放vector對象 446

23.1.2 operator=函數—拷貝vector中 的內容 448

23.2 迭代器函數 449

23.2.1 begin函數和end函數—返回 第 一個元素和最後一個元素的後 一個位置 449

23.2.2 rbegin函數和rend函數—返回 與最後一個元素和第 一個元素 相關的迭代器 450

23.3 容量類函數 452

23.3.1 size函數、max_size函數和capacity 函數—返回元素的實際個數、 能容納的最大元素個數和分配的 存儲空間大小 452

23.3.2 empty函數—判斷vector是否 為空 453

23.3.3 resize函數—調整vector容器 的大小 455

23.3.4 reserve函數—重新為vector 容器分配內存空間 456

23.4 存取類函數 457

23.4.1 operator[]函數—存取vector中 的元素 457

23.4.2 at函數—存取vector中的元素 (進行越界檢查) 459

23.4.3 front函數和back函數—返回 vector中的第 一個元素和最後 一個元素 460

23.5 操作類函數 461

23.5.1 assign函數—為vector中的 元素賦值 462

23.5.2 push_back函數—在vector的 末尾追加新元素 463

23.5.3 pop_back函數—刪除vector中 的最後一個元素 464

23.5.4 insert函數—在vector中插入 元素 466

23.5.5 erase函數—刪除vector中指定 的元素 467

23.5.6 clear函數—清除vector中的 元素 469

23.5.7 swap函數—交換兩個vector 中的內容 470

第 24章 deque類 472

deque類是C++的雙端隊列。它主要包括求隊列的大小函數、元素的存取函數、向隊列中插入元素和刪除元素的函數等。

24.1 構造類函數 472

24.1.1 deque的構造函數和析構 函數—創建deque對象和 釋放deque對象 472

24.1.2 operator=函數—拷貝deque中 的內容 474

24.2 迭代器函數 475

24.2.1 begin函數和end函數—返回 第 一個元素和最後一個元素的 後一個位置 476

24.2.2 rbegin函數和rend函數—返回 相對於begin函數和end函數的 反向迭代器 477

24.3 容量類函數 478

24.3.1 size函數和max_size函數— 返回元素的實際個數和能容納的 最大元素個數 478

24.3.2 empty函數—判斷deque是否 為空 480

24.3.3 resize函數—調整deque容器 的大小 481

24.4 存取類函數 483

24.4.1 operator[]函數—存取deque中 的元素 483

24.4.2 at函數—存取deque中的元素 (進行越界檢查) 484

24.4.3 front函數和back函數—返回 deque中的第 一個元素和最後一 個元素 486

24.5 操作類函數 487

24.5.1 assign函數—為deque中的 元素賦值 487

24.5.2 push_back函數—在deque的 末尾追加新元素 489

24.5.3 push_front函數—在deque的 開始位置插入新元素 490

24.5.4 pop_back函數—移除deque中 的最後一個元素 491

24.5.5 pop_front函數—移除deque中 的第 一個元素 492

24.5.6 insert函數—在deque的指定 位置插入元素 494

24.5.7 erase函數—刪除deque中指定 的元素 495

24.5.8 clear函數—清除deque中的 所有元素 497

24.5.9 swap函數—交換兩個deque中 的內容 498

第 25章 list類 501

list類是C++的鏈表容器。它主要包括求鏈表的大小函數、元素的存取函數、鏈表的操作函數。例如,push_front函數在鏈表的開始插入元素,push_back函數在鏈表的末尾插入元素,unique函數刪除鏈表中重復的元素。

25.1 構造類函數 501

25.1.1 list的構造函數和析構函數— 創建list對象和釋放list 對象 501

25.1.2 operator=函數—拷貝list中的 內容 503

25.2 迭代器函數 505

25.2.1 begin函數和end函數—返回 第 一個元素和最後一個元素的 後一個位置 505

25.2.2 rbegin函數和rend函數—返回 相對於begin函數和end函數的 反向迭代器 506

25.3 容量類函數 508

25.3.1 size函數和max_size函數— 返回元素的實際個數和能容納的 最大元素個數 508

25.3.2 empty函數—判斷list是否 為空 510

25.3.3 resize函數—調整list的 大小 511

25.4 存取類函數 513

25.4.1 front函數—返回list中的 第 一個元素 513

25.4.2 back函數—返回list中的 最後一個元素 514

25.5 操作類函數 515

25.5.1 assign函數—為list中的元素 賦值 515

25.5.2 push_back函數—在list的末尾 追加新元素 517

25.5.3 push_front函數—在list的 開始位置插入新元素 518

25.5.4 pop_back函數—移除list 中的最後一個元素 519

25.5.5 pop_front函數—移除list中的 第 一個元素 520

25.5.6 insert函數—在list的指定位置 插入元素 522

25.5.7 erase函數—刪除list中指定的 元素 523

25.5.8 clear函數—清除list中的所有 元素 525

25.5.9 swap函數—交換兩個list中的 內容 526

25.5.10 splice函數—將一個list 中的元素移動到另一個 list 528

25.5.11 remove函數—從list中移除 指定的元素 529

25.5.12 remove_if函數—刪除list中 不等於迭代器指向的函數 531

25.5.13 unique函數—刪除list中重復 的元素 532

25.5.14 merge函數—將兩個list鏈表 合並 534

25.5.15 sort函數—對list中的元素 排序 535

25.5.16 reverse函數—將list中的 元素逆置 537

第 26章 stack類 539

stack類是C++的棧容器。它主要包括求棧的大小函數和存取函數。例如,top函數返回棧頂元素,push函數在棧頂位置插入新元素,pop函數刪除棧頂元素。

26.1 構造類函數 539

26.2 容量類函數 541

26.2.1 empty函數—判斷stack 是否為空 541

26.2.2 size函數—返回stack中的 元素個數 542

26.3 存取類函數 543

26.4 操作類函數 544

26.4.1 push函數—在stack的棧頂 位置插入新元素 544

26.4.2 pop函數—移除stack的棧 頂元素 546

第 27章 queue類 548

queue類是C++的隊列容器。它主要包括隊列的存取函數和一些判斷隊列的狀態函數。例如,front函數用來存取隊頭元素,back函數用來存取隊尾元素。

27.1 構造類函數 548

27.2 容量類函數 550

27.2.1 empty函數—判斷queue 是否為空 550

27.2.2 size函數—返回queue的 大小 551

27.3 存取類函數 552

27.3.1 front函數—返回queue的 隊頭元素 552

27.3.2 back函數—返回queue的 隊尾元素 553

27.4 操作類函數 554

27.4.1 push函數—在queue隊尾 插入新元素 554

27.4.2 pop函數—移除queue的 隊頭元素 556

第 28章 set類 558

set類是C++的集合容器。它主要包括求集合的大小函數和其他操作函數。例如,find函數返回要查找元素的迭代器,lower_bound函數返回大於等於某個值的第 一個元素的迭代器。

28.1 構造類函數 558

28.2 迭代器類函數 560

28.2.1 begin函數和end函數—返回 set的第 一個元素和最後一個元 素的迭代器 560

28.2.2 rbegin函數和rend函數—返回 set中的最後一個元素和第 一個 元素的反向迭代器 562

28.3 容量類函數 563

28.3.1 empty函數—判斷set是否 為空 563

28.3.2 size函數—返回set的 大小 564

28.3.3 max_size函數—返回set能 容納的最大元素個數 565

28.4 操作類函數 567

28.4.1 insert函數—在set中插入新 元素 567

28.4.2 swap函數—交換兩個set中的 內容 568

28.4.3 erase函數—清除set中的 元素 570

28.4.4 clear函數—清空set中的 元素 572

28.4.5 find函數—查找set中的 元素 573

28.4.6 count函數—統計set中某一個 元素的個數 574

28.4.7 lower_bound函數和upper_bound 函數—返回set中元素下界和 上界的迭代器 576

28.4.8 equal_range函數—返回set中 元素x的下限和上限 577

第 29章 map類 579

map 類是 C++的映射容器。它主要包括求map容器大小的函數、元素的存取函數和查找操作函數。例如,insert函數是插入一個元素到map中,erase函數是清除map中的元素。

29.1 構造類函數 580

29.1.1 map的構造函數和析構函數— 創建map對象和釋放map 對象 580

29.1.2 map的賦值構造函數—通過一 個map對象為另一個map對象 賦值 581

29.2 迭代器類函數 583

29.2.1 begin函數和end函數—返回 第 一個元素的位置和最後一個 元素的後一個位置 583

29.2.2 rbegin函數和rend函數—返回 指向map中最後一個元素的反 向迭代器和第 一個元素之 前的反向迭代器 584

29.3 容量類函數 585

29.3.1 empty函數—判斷map是否 為空 585

29.3.2 size函數—返回map容器中的 元素個數 587

29.3.3 max_size函數—返回map容器 能容納的最大元素個數 588

29.4 存取類函數 589

29.5 操作類函數 590

29.5.1 insert函數—在map中插入 新元素 590

29.5.2 erase函數—移除map中的 元素 592

29.5.3 swap函數—交換兩個map中 的內容 594

29.5.4 clear函數—清除map中的 所有元素 595

29.5.5 count函數—統計map中某個 元素關鍵字的個數 596

29.5.6 find函數—查找map中的 元素 598