C++ STL——數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)
定 價(jià):37 元
當(dāng)前圖書已被 6 所學(xué)校薦購過!
查看明細(xì)
- 作者:余文溪 黃襄念
- 出版時(shí)間:2020/4/1
- ISBN:9787560656281
- 出 版 社:西安電子科技大學(xué)出版社
- 中圖法分類:TP312.8
- 頁碼:240
- 紙張:膠版紙
- 版次:1
- 開本:16K
數(shù)據(jù)結(jié)構(gòu)與算法一直是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的核心課程,數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)的組織方式,算法則在此基礎(chǔ)上搭建高效的求解方法。STL(Standard Template Library,標(biāo)準(zhǔn)模板庫)是運(yùn)用泛型編程思想實(shí)現(xiàn)的C++?模板庫,提供了包括容器、算法、迭代器等在內(nèi)的豐富組件,涵蓋和實(shí)現(xiàn)了大多數(shù)的數(shù)據(jù)結(jié)構(gòu)以及諸多通用泛型算法。本書共10章,全面系統(tǒng)地介紹了C++?的模板技術(shù)、輸入/輸出流、字符串、容器以及各類通用算法、函數(shù)對(duì)象、數(shù)值數(shù)組等內(nèi)容,并通過大量的示例及分析使讀者理解并應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法的STL實(shí)現(xiàn),體會(huì)STL的精妙設(shè)計(jì)。
本書配套提供了課件、示例程序、習(xí)題解答等教輔材料,精心設(shè)計(jì)了許多教學(xué)提示和知識(shí)總結(jié)。對(duì)于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法和C++?泛型編程的大專院校計(jì)算機(jī)專業(yè)本科生及研究生來說,本書非常適合作為他們的數(shù)據(jù)結(jié)構(gòu)教材或教學(xué)參考書;對(duì)于相關(guān)的專業(yè)技術(shù)人員而言,本書也是一本很好的參考讀物。
C++ STL(標(biāo)準(zhǔn)模板庫)是C++?標(biāo)準(zhǔn)庫的重要組成部分,應(yīng)用非常廣泛,集中體現(xiàn)了C++?泛型編程的思想,以模板的形式提供了對(duì)數(shù)據(jù)結(jié)構(gòu)的封裝以及對(duì)常用算法的實(shí)現(xiàn)。在STL提供的組件中,容器、迭代器和算法被認(rèn)為是STL的三大件。正所謂“不要重復(fù)發(fā)明輪子”,運(yùn)用這些組件進(jìn)行程序開發(fā)可以避免重復(fù)實(shí)現(xiàn)簡單的容器與常用算法,使得代碼的執(zhí)行效率、可維護(hù)性大大提高。但是一方面,許多人只關(guān)心如何使用STL標(biāo)準(zhǔn)模板庫,而不理解其背后的設(shè)計(jì)方法和理論基礎(chǔ);另一方面,在大學(xué)的數(shù)據(jù)結(jié)構(gòu)和算法課程中,學(xué)生聽懂了理論知識(shí)但在實(shí)踐中卻難以入手。因此,本書力求從應(yīng)用的角度去講STL的用法,再從基礎(chǔ)的角度去探討STL的設(shè)計(jì),說明數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)的實(shí)現(xiàn);使讀者不僅要會(huì)使用輪子,也要能一窺輪子的究竟。
本書是作者在長期從事C++?泛型程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)與算法課程的教學(xué)過程中,總結(jié)教學(xué)經(jīng)驗(yàn),充分結(jié)合課程需要與學(xué)生實(shí)際學(xué)習(xí)效果編撰而成的一本教材。全書分為十章:
第一章介紹STL的背景知識(shí)與組件構(gòu)成。
第二章介紹泛型編程的思想以及C++?模板技術(shù)、模板特化與操作符重載。
第三章介紹STL的輸入/輸出流,包括標(biāo)準(zhǔn)輸入/輸出流、文件輸入/輸出流與字符串輸入/輸出流。
第四章介紹字符串類的創(chuàng)建、迭代器、元素訪問、修改及查找等常用功能。
第五章是全書的一個(gè)重要章節(jié),介紹了STL的重要組件——容器,從底層數(shù)據(jù)結(jié)構(gòu)的角度出發(fā),通過大量示例與代碼分析及實(shí)驗(yàn)驗(yàn)證等環(huán)節(jié),引領(lǐng)讀者逐步掌握并靈活運(yùn)用STL的各類通用容器,包括順序容器(vector、deque、list)、關(guān)聯(lián)容器(set、map、unordered_set等)及容器適配器(stack、 priority_queue)。
第六章是全書后半部分關(guān)于STL泛型算法知識(shí)的總概性章節(jié),介紹了迭代器、謂詞與算法分類。
第七章介紹了非可變序列算法,包括用于循環(huán)、查詢、計(jì)數(shù)與比較的泛型算法。
第八章介紹了可變序列算法,包括但不限于寫入類的copy、transform、swap、fill、generate、replace算法以及重排類的move、unique、reverse、rotate、partition、random_shuffle等算法。
第九章單獨(dú)介紹了排序類的相關(guān)算法以及在有序集基礎(chǔ)上的操作算法。
第十章介紹了用于數(shù)值計(jì)算的數(shù)值算法以及預(yù)定義函數(shù)對(duì)象和數(shù)值數(shù)組類。
應(yīng)該說,最好的學(xué)習(xí)方法就是實(shí)踐和練習(xí),因此本書采取了代碼引領(lǐng)理論的講述方式。全書提供了大量的例程,這些例程代碼在編譯后都可以運(yùn)行,每個(gè)例程的輸出結(jié)果都做了說明,對(duì)例程的關(guān)鍵代碼還進(jìn)行了重點(diǎn)分析與闡述。圍繞典型數(shù)據(jù)結(jié)構(gòu)的STL實(shí)現(xiàn),本書從多角度去分析不同容器的實(shí)現(xiàn)方式和底層數(shù)據(jù)的組織方式,適時(shí)地給出一些圖表和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)的回顧并加以綜合理解;圍繞典型算法實(shí)現(xiàn),本書在介紹算法功能及調(diào)用形式的基礎(chǔ)上,嘗試對(duì)部分算法進(jìn)行分析與拆解,跟讀者一道去領(lǐng)會(huì)算法的設(shè)計(jì)思想、代碼邏輯和算法效率,從而獲得程序設(shè)計(jì)能力的提升。
在本書的編寫過程中,作者參閱了相關(guān)參考文獻(xiàn)及網(wǎng)絡(luò)資料,并引用了一些相關(guān)文字和例程,在此謹(jǐn)向這些文獻(xiàn)資料的作者表示衷心的感謝。
由于作者水平有限,時(shí)間緊迫,書中難免存在疏漏,在此懇請(qǐng)各位讀者指出并不吝賜教,不勝感激。
如需查看本書配套資源,可掃描封底二維碼,上網(wǎng)獲取。
第一章 C++?STL概述 1
1.1 C++?STL導(dǎo)言 1
1.2 STL組件 2
1.2.1 標(biāo)準(zhǔn)模板庫的三大件 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 類模板實(shí)例化 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)準(zhǔn)輸入/輸出流類 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 字符串迭代器的運(yùn)算 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 字符串對(duì)象上的操作 54
4.6.1 字符串對(duì)象上的操作函數(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雙端隊(duì)列容器 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 隊(duì)列queue 101
5.4.3 優(yōu)先隊(duì)列(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 移動(dòng)迭代器 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 計(jì)數(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ù)對(duì)象 210
10.3 數(shù)值數(shù)組類valarray 213
本章小結(jié) 228
課后習(xí)題 228
參考文獻(xiàn) 231