C++ STL——數(shù)據(jù)結(jié)構(gòu)與算法實現(xiàn)
定 價:37 元
- 作者:余文溪 黃襄念
- 出版時間:2020/4/1
- ISBN:9787560656281
- 出 版 社:西安電子科技大學(xué)出版社
- 中圖法分類:TP312.8
- 頁碼:240
- 紙張:膠版紙
- 版次:1
- 開本:16K
數(shù)據(jù)結(jié)構(gòu)與算法一直是計算機科學(xué)與技術(shù)專業(yè)的核心課程,數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)的組織方式,算法則在此基礎(chǔ)上搭建高效的求解方法。STL(Standard Template Library,標(biāo)準模板庫)是運用泛型編程思想實現(xiàn)的C++?模板庫,提供了包括容器、算法、迭代器等在內(nèi)的豐富組件,涵蓋和實現(xiàn)了大多數(shù)的數(shù)據(jù)結(jié)構(gòu)以及諸多通用泛型算法。本書共10章,全面系統(tǒng)地介紹了C++?的模板技術(shù)、輸入/輸出流、字符串、容器以及各類通用算法、函數(shù)對象、數(shù)值數(shù)組等內(nèi)容,并通過大量的示例及分析使讀者理解并應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法的STL實現(xiàn),體會STL的精妙設(shè)計。
本書配套提供了課件、示例程序、習(xí)題解答等教輔材料,精心設(shè)計了許多教學(xué)提示和知識總結(jié)。對于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法和C++?泛型編程的大專院校計算機專業(yè)本科生及研究生來說,本書非常適合作為他們的數(shù)據(jù)結(jié)構(gòu)教材或教學(xué)參考書;對于相關(guān)的專業(yè)技術(shù)人員而言,本書也是一本很好的參考讀物。
C++ STL(標(biāo)準模板庫)是C++?標(biāo)準庫的重要組成部分,應(yīng)用非常廣泛,集中體現(xiàn)了C++?泛型編程的思想,以模板的形式提供了對數(shù)據(jù)結(jié)構(gòu)的封裝以及對常用算法的實現(xiàn)。在STL提供的組件中,容器、迭代器和算法被認為是STL的三大件。正所謂“不要重復(fù)發(fā)明輪子”,運用這些組件進行程序開發(fā)可以避免重復(fù)實現(xiàn)簡單的容器與常用算法,使得代碼的執(zhí)行效率、可維護性大大提高。但是一方面,許多人只關(guān)心如何使用STL標(biāo)準模板庫,而不理解其背后的設(shè)計方法和理論基礎(chǔ);另一方面,在大學(xué)的數(shù)據(jù)結(jié)構(gòu)和算法課程中,學(xué)生聽懂了理論知識但在實踐中卻難以入手。因此,本書力求從應(yīng)用的角度去講STL的用法,再從基礎(chǔ)的角度去探討STL的設(shè)計,說明數(shù)據(jù)結(jié)構(gòu)與算法知識的實現(xiàn);使讀者不僅要會使用輪子,也要能一窺輪子的究竟。
本書是作者在長期從事C++?泛型程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)與算法課程的教學(xué)過程中,總結(jié)教學(xué)經(jīng)驗,充分結(jié)合課程需要與學(xué)生實際學(xué)習(xí)效果編撰而成的一本教材。全書分為十章:
第一章介紹STL的背景知識與組件構(gòu)成。
第二章介紹泛型編程的思想以及C++?模板技術(shù)、模板特化與操作符重載。
第三章介紹STL的輸入/輸出流,包括標(biāo)準輸入/輸出流、文件輸入/輸出流與字符串輸入/輸出流。
第四章介紹字符串類的創(chuàng)建、迭代器、元素訪問、修改及查找等常用功能。
第五章是全書的一個重要章節(jié),介紹了STL的重要組件——容器,從底層數(shù)據(jù)結(jié)構(gòu)的角度出發(fā),通過大量示例與代碼分析及實驗驗證等環(huán)節(jié),引領(lǐng)讀者逐步掌握并靈活運用STL的各類通用容器,包括順序容器(vector、deque、list)、關(guān)聯(lián)容器(set、map、unordered_set等)及容器適配器(stack、 priority_queue)。
第六章是全書后半部分關(guān)于STL泛型算法知識的總概性章節(jié),介紹了迭代器、謂詞與算法分類。
第七章介紹了非可變序列算法,包括用于循環(huán)、查詢、計數(shù)與比較的泛型算法。
第八章介紹了可變序列算法,包括但不限于寫入類的copy、transform、swap、fill、generate、replace算法以及重排類的move、unique、reverse、rotate、partition、random_shuffle等算法。
第九章單獨介紹了排序類的相關(guān)算法以及在有序集基礎(chǔ)上的操作算法。
第十章介紹了用于數(shù)值計算的數(shù)值算法以及預(yù)定義函數(shù)對象和數(shù)值數(shù)組類。
應(yīng)該說,最好的學(xué)習(xí)方法就是實踐和練習(xí),因此本書采取了代碼引領(lǐng)理論的講述方式。全書提供了大量的例程,這些例程代碼在編譯后都可以運行,每個例程的輸出結(jié)果都做了說明,對例程的關(guān)鍵代碼還進行了重點分析與闡述。圍繞典型數(shù)據(jù)結(jié)構(gòu)的STL實現(xiàn),本書從多角度去分析不同容器的實現(xiàn)方式和底層數(shù)據(jù)的組織方式,適時地給出一些圖表和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識的回顧并加以綜合理解;圍繞典型算法實現(xiàn),本書在介紹算法功能及調(diào)用形式的基礎(chǔ)上,嘗試對部分算法進行分析與拆解,跟讀者一道去領(lǐng)會算法的設(shè)計思想、代碼邏輯和算法效率,從而獲得程序設(shè)計能力的提升。
在本書的編寫過程中,作者參閱了相關(guān)參考文獻及網(wǎng)絡(luò)資料,并引用了一些相關(guān)文字和例程,在此謹向這些文獻資料的作者表示衷心的感謝。
由于作者水平有限,時間緊迫,書中難免存在疏漏,在此懇請各位讀者指出并不吝賜教,不勝感激。
如需查看本書配套資源,可掃描封底二維碼,上網(wǎng)獲取。
第一章 C++?STL概述 1
1.1 C++?STL導(dǎo)言 1
1.2 STL組件 2
1.2.1 標(biāo)準模板庫的三大件 2
1.2.2 STL的其他組件 3
1.3 泛型編程與STL 4
1.4 STL的頭文件 4
1.5 STL的命名空間 5
本章小結(jié) 6
課后習(xí)題 6
第二章 C++?STL技術(shù)基礎(chǔ) 8
2.1 泛型與模板 8
2.2 函數(shù)模板 9
2.3 類模板 13
2.3.1 類模板的定義 13
2.3.2 類模板實例化 15
2.3.3 類模板的其他語法規(guī)則 16
2.3.4 類模板派生 17
2.4 模板特化 18
2.4.1 函數(shù)模板特化 19
2.4.2 類模板特化 20
2.5 操作符重載 22
本章小結(jié) 25
課后習(xí)題 26
第三章 C++?STL輸入/輸出流 28
3.1 STL中的I/O流類 28
3.2 標(biāo)準輸入/輸出流類 29
3.3 文件I/O流 32
3.4 字符串I/O流類 38
本章小結(jié) 41
課后習(xí)題 41
第四章 C++?STL String 44
4.1 字符串的創(chuàng)建 44
4.2 字符串迭代器 45
4.2.1 字符串迭代器的定義 45
4.2.2 字符串迭代器的賦值 45
4.2.3 字符串迭代器的運算 46
4.3 字符串容量 47
4.4 訪問字符串的元素 49
4.5 修改字符串 49
4.5.1 用于修改字符串的相關(guān)成員函數(shù) 49
4.5.2 修改字符串——assign賦值 50
4.5.3 修改字符串——追加 51
4.5.4 修改字符串——插入與刪除 52
4.5.5 修改字符串——替換與交換 53
4.6 字符串對象上的操作 54
4.6.1 字符串對象上的操作函數(shù) 54
4.6.2 字符串操作——Cstring 55
4.6.3 字符串操作——查找 56
4.6.4 字符串操作——取子串substr() 58
4.7 字符串綜合舉例 59
本章小結(jié) 61
課后習(xí)題 61
第五章 C++?STL容器 64
5.1 STL容器概述 64
5.2 順序容器 65
5.2.1 vector向量容器 66
5.2.2 deque雙端隊列容器 75
5.2.3 list鏈表容器 78
5.3 關(guān)聯(lián)容器 82
5.3.1 集合set與多重集合multiset 83
5.3.2 映射map與多重映射multimap 86
5.3.3 unordered_set容器與unordered_multiset容器 92
5.3.4 unordered_map容器與unordered_multimap容器 96
5.4 容器適配器 98
5.4.1 棧適配器 99
5.4.2 隊列queue 101
5.4.3 優(yōu)先隊列(priority_queue) 104
5.5 似容器 110
本章小結(jié) 114
課后習(xí)題 114
第六章 C++?STL通用算法與迭代器 117
6.1 通用算法概述 117
6.2 迭代器的分類 118
6.3 預(yù)定義迭代器 119
6.3.1 插入迭代器 119
6.3.2 流迭代器 121
6.3.3 反向迭代器 122
6.3.4 移動迭代器 122
6.4 算法形參與謂詞 123
6.5 通用算法分類 126
本章小結(jié) 127
課后習(xí)題 127
第七章 C++?STL非可變序列算法 131
7.1 非可變序列算法概述 131
7.2 循環(huán)算法 132
7.3 查詢算法 135
7.4 計數(shù)算法 144
7.5 比較算法 146
本章小結(jié) 156
課后習(xí)題 156
第八章 C++?STL可變序列算法 159
8.1 可變序列算法概述 159
8.2 寫入算法 161
8.3 重排算法 172
本章小結(jié) 186
課后習(xí)題 186
第九章 C++?STL排序相關(guān)算法 189
9.1 排序算法sort 189
9.2 第n位的元素算法nth_element 192
9.3 二分搜索算法binary_search 194
9.4 有序集操作算法 197
本章小結(jié) 202
課后習(xí)題 203
第十章 STL數(shù)值算法相關(guān) 206
10.1 數(shù)值算法 206
10.2 預(yù)定義函數(shù)對象 210
10.3 數(shù)值數(shù)組類valarray 213
本章小結(jié) 228
課后習(xí)題 228
參考文獻 231