《C/C++函數與算法速查寶典》封麵

內容簡介

本書全麵、係統地講解了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.1isalnum函數—判斷是否是英文字母或數字字符2
1.1.2isalpha函數—判斷是否為英文字母3
1.1.3isascii函數—判斷ASCII碼是否位於0~1274
1.1.4iscntrl函數—判斷是否是控製字符5
1.1.5isdigit函數—判斷是否是數字字符6
1.1.6isgraph函數—判斷是否是可打印字符(不包括空格)7
1.1.7islower函數—判斷是否是小寫英文字母8
1.1.8isprint函數—判斷是否是可打印字符(包括空格)10
1.1.9ispunct函數—判斷是否是標點符號11
1.1.10isspace函數—判斷是否是空白符12
1.1.11isxdigit函數—判斷是否是十六進製字符13
1.2 字符轉換函數15
1.2.1tolower函數—將大寫英文字母轉換為小寫英文字母15
1.2.2toupper函數—將小寫英文字母轉換為大寫英文字母16
1.2.3toascii函數—將字符轉換為ASCII碼17
第2章 stdio.h庫函數19
stdio.h庫函數主要包括常用的輸入/輸出函數。例如,其中的getch函數用來接受從鍵盤輸入的字符,printf函數用來格式化輸出數據,fprintf函數用來格式化輸出數據到指定的文件中。
2.1 字符輸入/輸出函數19
2.1.1getch函數和getche函數—接受從鍵盤輸入的字符19
2.1.2getchar函數—接受一個字符並顯示在屏幕上20
2.1.3gets函數—讀取一個字符串21
2.1.4putchar函數—在屏幕上輸出一個字符23
2.1.5puts函數—在屏幕上輸出一個字符串24
2.2 格式化輸入/輸出函數25
2.2.1printf函數—格式化輸出數據25
2.2.2scanf函數—格式化輸入數據28
2.2.3sprintf函數—輸出格式化數據到指定的數組中30
2.2.4sscanf函數—從字符串讀取格式化數據31
2.2.5vprintf函數—在屏幕上輸出格式化變長參數列表33
2.2.6vscanf函數—讀取從鍵盤輸入的格式化數據34
2.3 文件輸入/輸出函數35
2.3.1fgetc函數和getc函數—從文件中讀取一個字符35
2.3.2fgets函數—從文件中讀取多個字符36
2.3.3fprintf函數—格式化輸出數據到指定的文件中38
2.3.4fscanf函數—從文件中讀取格式化數據39
2.3.5fputc函數和putc函數—輸出一個字符到指定的文件中40
2.3.6fputs函數—輸出一個字符串到指定的文件中42
2.3.7fread函數—從文件中讀取一個數據塊43
2.3.8fwrite函數—向文件中寫入數據塊44
2.3.9vfprintf函數—輸出格式化數據到指定的文件46
2.3.10vfscanf函數—從文件中讀取格式化數據47
2.4 文件定位函數48
2.4.1fseek函數—移動文件位置指針到指定位置49
2.4.2ftell函數—得到文件位置指針的當前值50
2.4.3rewind函數—將文件位置指針移動到文件的開頭51
2.5 文件存取操作函數53
2.5.1fclose函數—關閉文件53
2.5.2fflush函數—將緩衝區的內容寫入文件54
2.5.3fopen函數—打開文件55
2.5.4remove函數—刪除文件57
2.5.5rename函數—重命名文件58
2.6 文件錯誤控製函數60
2.6.1clearerr函數—清除文件中的錯誤標誌60
2.6.2feof函數—是否到了文件末尾61
2.6.3ferror函數—檢查文件操作是否出現了錯誤62
2.7 文件輸入/輸出函數綜合應用範例64
第3章 string.h庫函數70
string.h庫函數主要包括常用的字符串操作函數。例如,其中的strcmp函數用來比較兩個字符串的大小,strcpy函數用來將一個字符串拷貝到另一個字符串中,strcat函數用來將兩個字符串連接在一起。
3.1 字符串比較函數70
3.1.1memcmp函數和memicmp函數—比較兩個字符串70
3.1.2strcmp函數和stricmp函數—比較兩個字符串72
3.1.3strncmp函數和strnicmp函數—比較兩個字符串74
3.2 字符串拷貝函數75
3.2.1memcpy函數—拷貝n個字節到另一個數組75
3.2.2memmove函數—拷貝n個字節到數組中(可重疊)76
3.2.3strcpy函數—字符串拷貝77
3.2.4strncpy函數—拷貝n個字符到目的字符數組78
3.3 字符串連接函數80
3.3.1strcat函數—連接兩個字符串80
3.3.2strncat函數—將字符串1的前n個字符連接到字符串281
3.4 字符串查找函數82
3.4.1memchr函數—在內存塊中查找字符83
3.4.2strchr函數—在字符串中查找字符84
3.4.3strstr函數—查找字符串85
3.4.4strtok函數—分解字符串87
3.5 字符串轉換函數88
3.5.1strlwr函數—將大寫字母轉換為小寫字母88
3.5.2strrev函數—將字符串逆置90
3.5.3strupr函數—將小寫字母轉換為大寫字母91
3.6 其他函數92
3.6.1memset函數—用指定的字符填充字符串92
3.6.2strlen函數—求字符串的長度93
3.7 字符串函數綜合應用範例94
第4章 stdlib.h庫函數99
stdlib.h庫函數主要包括字符串轉換函數、動態內存管理函數、過程控製函數等。例如,atof函數是將字符串轉換為雙精度浮點數,malloc函數是分配內存空間,abort函數用來終止當前的進程。
4.1 字符串轉換函數99
4.1.1atof函數—將字符串轉換為雙精度浮點數99
4.1.2atoi函數—將字符串轉換為整數101
4.1.3atol函數—將字符串轉換為長整型數102
4.1.4strtod函數—將字符串轉換為雙精度浮點數103
4.1.5strtol函數—將字符串轉換為長整型數104
4.2 動態內存管理函數106
4.2.1malloc函數—分配內存空間106
4.2.2calloc函數—分配內存空間並初始化107
4.2.3free函數—釋放內存空間109
4.2.4realloc函數—重新分配內存空間111
4.2.5動態內存管理函數綜合應用範例112
4.3 隨機數生成函數116
4.3.1rand函數—產生偽隨機數116
4.3.2srand函數—初始化隨機數發生器117
4.4 查找函數和排序函數118
4.4.1bsearch函數—折半查找118
4.4.2qsort函數—快速排序119
4.4.3排序函數和查找函數綜合應用範例121
4.5 過程控製函數123
4.5.1abort函數—終止當前進程123
4.5.2exit函數—退出當前程序126
4.5.3system函數—執行係統命令127
第5章 math.h庫函數129
math.h庫函數主要包括三角函數、指數和對數函數、冪指數和開方函數等。例如,cos函數用來求角度的餘弦值,log函數用來求自然對數,pow10函數用來求10exp的值。
5.1 三角函數129
5.1.1cos函數—求角度的餘弦值129
5.1.2sin函數—求角度的正弦值130
5.1.3tan函數—求角度的正切值131
5.1.4acos函數—求角度的反餘弦值132
5.1.5asin函數—求角度的反正弦值133
5.1.6atan函數—求角度的反正切值134
5.2 指數和對數函數136
5.2.1exp函數—求以自然數e為底的指數值136
5.2.2log函數—求自然對數137
5.2.3log10函數—求對數138
5.3 冪指數和開方函數139
5.3.1pow函數—求baseexp的值139
5.3.2pow10函數—求10exp的值140
5.3.3sqrt函數—求平方根141
5.4 絕對值函數142
5.4.1abs函數—求整數的絕對值143
5.4.2fabs函數—求浮點數的絕對值144
5.4.3labs函數—求長整型數據的絕對值145
5.5 其他函數146
5.5.1floor函數—求不大於x的最大整數146
5.5.2fmod函數—返回x/y的餘數147
5.5.3frexp函數—將浮點數分解為尾數和指數148
5.5.4hypot函數—根據直角邊求斜邊149
5.5.5modf函數—將浮點數分解為整數部分和小數部分151
5.5.6poly函數—計算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.1clock函數—返回CPU時鍾計時單元166
7.1.2difftime函數—計算兩個時鍾之間的間隔167
7.1.3time函數—得到當前的時間169
7.2 時間格式轉換函數170
7.2.1asctime函數—將時間格式轉換為字符串形式170
7.2.2ctime函數—將時間轉換為字符串形式171
7.2.3gmtime函數—返回(格林尼治)時間結構的指針172
7.2.4localtime函數—返回指向時間結構的指針174
7.2.5mktime函數—將structtm格式的時間轉換為秒175
7.2.6strftime函數—將時間格式化為字符串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如何使用VisualStudio2019開發環境調試程序360
18.2.2冒泡排序程序調試366
18.2.3合並鏈表程序調試371
以下章節見電子資源
第3篇 C++輸入/輸出流與容器篇
第19章 ios_base類379
ios_base類主要是C++輸入/輸出流的基類,它主要包含流的格式化函數。例如,flags函數用來獲取或設置流格式,precision函數用來得到/設置浮點數的精度。
19.1flags函數—得到/設置流的格式標誌380
19.2setf函數和unsetf函數—設置和清除流的格式標誌381
19.3precision函數—得到/設置浮點數的精度383
19.4width函數—得到/設置域寬384
第20章 iostream類386
iostream類派生自istream類和ostream類。iostream類中的函數非常常用。例如,isotream類的對象cout用來控製輸出、cin用來控製輸入。
20.1get函數—無格式的輸入操作388
20.2getline函數—接受輸入的字符串390
20.3ignore函數—忽略指定的字符391
20.4peek函數—從流中接受輸入的字符392
20.5read函數—讀取一個字符塊393
20.6putback函數—將讀取的字符返回給輸入流394
20.7put函數—輸出字符396
20.8fill函數—得到/設置填充字符397
第21章 文件流類399
ifstream類、ofstream類和fstream類都是對文件進行讀/寫操作的類,我們將這些類統稱為文件流類。在C++中,要對文件進行讀/寫操作,就需要先將文件流類與文件關聯起來(一般采用open的方式或構造函數的方式),然後再利用文件流對文件進行操作。
21.1ifstream構造函數—創建輸入流對象400
21.2rdbuf函數—返回指向filebuf的指針401
21.3is_open函數—檢測文件是否被打開403
21.4open函數和close函數—打開和關閉文件404
21.5read函數和write函數—從流中讀取數據和向流中寫入數據406
21.6seekg函數和tellg函數—設置和得到流的位置指針位置407
21.7seekp函數和tellp函數—設置和得到文件的位置指針位置409
21.8flush函數—刷新輸出流緩衝區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.6at函數—返回string中的某個字符(範圍檢測)419
22.2字符串迭代器函數420
22.2.1begin函數和end函數—返回第一個字符和最後一個字符的迭代器420
22.2.2rbegin函數和rend函數—返回相對於begin函數和end函數的反向迭代器422
22.3字符串長度函數423
22.3.1length函數和size函數—返回字符個數423
22.3.2max_size函數—返回string能容納的最大字符個數424
22.3.3capacity函數—返回分配的存儲空間大小425
22.3.4resize函數—設置string的長度427
22.3.5reserve函數—為string對象預留空間428
22.3.6empty函數—判斷string是否為空429
22.4字符串操作函數430
22.4.1insert函數—判斷string是否為空430
22.4.2erase函數—清除string中的字符432
22.4.3replace函數—置換string中的字符433
22.4.4swap函數—交換兩個字符串的內容436
22.4.5c_str函數—返回與string等效的字符串437
22.4.6copy函數—取出string對象中的指定字符438
22.4.7find函數—在string對象中查找字符串439
22.4.8find_first_of函數和find_last_of函數—在string中查找字符串(部分匹配)441
22.4.9substr函數—生成string的子串442
22.4.10stoi函數—將字符串中的數字轉換為整數444
第23章 vector類446
vector類是C++中常用的容器類,包括了一些常用的函數實現,用戶無須重新編寫函數即可使用。例如,size函數用來表示向量的大小,empty函數用來表示向量是否為空,push_back函數用來向向量中追加元素。
23.1構造類函數446
23.1.1vector的構造函數和析構函數—創建vector對象和釋放vector對象446
23.1.2operator=函數—拷貝vector中的內容448
23.2迭代器函數449
23.2.1begin函數和end函數—返回第一個元素和最後一個元素的後一個位置449
23.2.2rbegin函數和rend函數—返回與最後一個元素和第一個元素相關的迭代器450
23.3容量類函數452
23.3.1size函數、max_size函數和capacity函數—返回元素的實際個數、能容納的最大元素個數和分配的存儲空間大小452
23.3.2empty函數—判斷vector是否為空453
23.3.3resize函數—調整vector容器的大小455
23.3.4reserve函數—重新為vector容器分配內存空間456
23.4存取類函數457
23.4.1operator[]函數—存取vector中的元素457
23.4.2at函數—存取vector中的元素(進行越界檢查)459
23.4.3front函數和back函數—返回vector中的第一個元素和最後一個元素460
23.5操作類函數461
23.5.1assign函數—為vector中的元素賦值462
23.5.2push_back函數—在vector的末尾追加新元素463
23.5.3pop_back函數—刪除vector中的最後一個元素464
23.5.4insert函數—在vector中插入元素466
23.5.5erase函數—刪除vector中指定的元素467
23.5.6clear函數—清除vector中的元素469
23.5.7swap函數—交換兩個vector中的內容470
第24章 deque類472
deque類是C++的雙端隊列。它主要包括求隊列的大小函數、元素的存取函數、向隊列中插入元素和刪除元素的函數等。
24.1構造類函數472
24.1.1deque的構造函數和析構函數—創建deque對象和釋放deque對象472
24.1.2operator=函數—拷貝deque中的內容474
24.2迭代器函數475
24.2.1begin函數和end函數—返回第一個元素和最後一個元素的後一個位置476
24.2.2rbegin函數和rend函數—返回相對於begin函數和end函數的反向迭代器477
24.3容量類函數478
24.3.1size函數和max_size函數—返回元素的實際個數和能容納的最大元素個數478
24.3.2empty函數—判斷deque是否為空480
24.3.3resize函數—調整deque容器的大小481
24.4存取類函數483
24.4.1operator[]函數—存取deque中的元素483
24.4.2at函數—存取deque中的元素(進行越界檢查)484
24.4.3front函數和back函數—返回deque中的第一個元素和最後一個元素486
24.5操作類函數487
24.5.1assign函數—為deque中的元素賦值487
24.5.2push_back函數—在deque的末尾追加新元素489
24.5.3push_front函數—在deque的開始位置插入新元素490
24.5.4pop_back函數—移除deque中的最後一個元素491
24.5.5pop_front函數—移除deque中的第一個元素492
24.5.6insert函數—在deque的指定位置插入元素494
24.5.7erase函數—刪除deque中指定的元素495
24.5.8clear函數—清除deque中的所有元素497
24.5.9swap函數—交換兩個deque中的內容498
第25章 list類501
list類是C++的鏈表容器。它主要包括求鏈表的大小函數、元素的存取函數、鏈表的操作函數。例如,push_front函數在鏈表的開始插入元素,push_back函數在鏈表的末尾插入元素,unique函數刪除鏈表中重複的元素。
25.1構造類函數501
25.1.1list的構造函數和析構函數—創建list對象和釋放list對象501
25.1.2operator=函數—拷貝list中的內容503
25.2迭代器函數505
25.2.1begin函數和end函數—返回第一個元素和最後一個元素的後一個位置505
25.2.2rbegin函數和rend函數—返回相對於begin函數和end函數的反向迭代器506
25.3容量類函數508
25.3.1size函數和max_size函數—返回元素的實際個數和能容納的最大元素個數508
25.3.2empty函數—判斷list是否為空510
25.3.3resize函數—調整list的大小511
25.4存取類函數513
25.4.1front函數—返回list中的第一個元素513
25.4.2back函數—返回list中的最後一個元素514
25.5操作類函數515
25.5.1assign函數—為list中的元素賦值515
25.5.2push_back函數—在list的末尾追加新元素517
25.5.3push_front函數—在list的開始位置插入新元素518
25.5.4pop_back函數—移除list中的最後一個元素519
25.5.5pop_front函數—移除list中的第一個元素520
25.5.6insert函數—在list的指定位置插入元素522
25.5.7erase函數—刪除list中指定的元素523
25.5.8clear函數—清除list中的所有元素525
25.5.9swap函數—交換兩個list中的內容526
25.5.10splice函數—將一個list中的元素移動到另一個list528
25.5.11remove函數—從list中移除指定的元素529
25.5.12remove_if函數—刪除list中不等於迭代器指向的函數531
25.5.13unique函數—刪除list中重複的元素532
25.5.14merge函數—將兩個list鏈表合並534
25.5.15sort函數—對list中的元素排序535
25.5.16reverse函數—將list中的元素逆置537
第26章 stack類539
stack類是C++的棧容器。它主要包括求棧的大小函數和存取函數。例如,top函數返回棧頂元素,push函數在棧頂位置插入新元素,pop函數刪除棧頂元素。
26.1構造類函數539
26.2容量類函數541
26.2.1empty函數—判斷stack是否為空541
26.2.2size函數—返回stack中的元素個數542
26.3存取類函數543
26.4操作類函數544
26.4.1push函數—在stack的棧頂位置插入新元素544
26.4.2pop函數—移除stack的棧頂元素546
第27章 queue類548
queue類是C++的隊列容器。它主要包括隊列的存取函數和一些判斷隊列的狀態函數。例如,front函數用來存取隊頭元素,back函數用來存取隊尾元素。
27.1構造類函數548
27.2容量類函數550
27.2.1empty函數—判斷queue是否為空550
27.2.2size函數—返回queue的大小551
27.3存取類函數552
27.3.1front函數—返回queue的隊頭元素552
27.3.2back函數—返回queue的隊尾元素553
27.4操作類函數554
27.4.1push函數—在queue隊尾插入新元素554
27.4.2pop函數—移除queue的隊頭元素556
第28章 set類558
set類是C++的集合容器。它主要包括求集合的大小函數和其他操作函數。例如,find函數返回要查找元素的迭代器,lower_bound函數返回大於等於某個值的第一個元素的迭代器。
28.1構造類函數558
28.2迭代器類函數560
28.2.1begin函數和end函數—返回set的第一個元素和最後一個元素的迭代器560
28.2.2rbegin函數和rend函數—返回set中的最後一個元素和第一個元素的反向迭代器562
28.3容量類函數563
28.3.1empty函數—判斷set是否為空563
28.3.2size函數—返回set的大小564
28.3.3max_size函數—返回set能容納的最大元素個數565
28.4操作類函數567
28.4.1insert函數—在set中插入新元素567
28.4.2swap函數—交換兩個set中的內容568
28.4.3erase函數—清除set中的元素570
28.4.4clear函數—清空set中的元素572
28.4.5find函數—查找set中的元素573
28.4.6count函數—統計set中某一個元素的個數574
28.4.7lower_bound函數和upper_bound函數—返回set中元素下界和上界的迭代器576
28.4.8equal_range函數—返回set中元素x的下限和上限577
第29章 map類579
map類是C++的映射容器。它主要包括求map容器大小的函數、元素的存取函數和查找操作函數。例如,insert函數是插入一個元素到map中,erase函數是清除map中的元素。
29.1構造類函數580
29.1.1map的構造函數和析構函數—創建map對象和釋放map對象580
29.1.2map的賦值構造函數—通過一個map對象為另一個map對象賦值581
29.2迭代器類函數583
29.2.1begin函數和end函數—返回第一個元素的位置和最後一個元素的後一個位置583
29.2.2rbegin函數和rend函數—返回指向map中最後一個元素的反向迭代器和第一個元素之前的反向迭代器584
29.3容量類函數585
29.3.1empty函數—判斷map是否為空585
29.3.2size函數—返回map容器中的元素個數587
29.3.3max_size函數—返回map容器能容納的最大元素個數588
29.4存取類函數589
29.5操作類函數590
29.5.1insert函數—在map中插入新元素590
29.5.2erase函數—移除map中的元素592
29.5.3swap函數—交換兩個map中的內容594
29.5.4clear函數—清除map中的所有元素595
29.5.5count函數—統計map中某個元素關鍵字的個數596
29.5.6find函數—查找map中的元素598
······

最後修改:2025 年 12 月 05 日