出版時(shí)間:2012-12 出版社:人民郵電出版社 作者:Siddhartha Rao 頁(yè)數(shù):458 字?jǐn)?shù):870000 譯者:袁國(guó)忠
Tag標(biāo)簽:無(wú)
內(nèi)容概要
《21天學(xué)通C++(第7版)》通過(guò)大量短小精悍的程序,詳細(xì)而全面地闡述了C++基本概念和技術(shù)以及C++11新增的功能,包括管理輸入/輸出、循環(huán)和數(shù)組、面向?qū)ο缶幊?、模板、使用?biāo)準(zhǔn)模板庫(kù)以及l(fā)ambda表達(dá)式等。這些內(nèi)容被組織成結(jié)構(gòu)合理、聯(lián)系緊密的章節(jié),每章都可在1小時(shí)內(nèi)閱讀完畢;每章都提供了示例程序清單,并輔以示例輸出和代碼分析,以闡述該章介紹的主題。為加深讀者對(duì)所學(xué)內(nèi)容的理解,每章末尾都提供了常見(jiàn)問(wèn)題及其答案以及練習(xí)和測(cè)驗(yàn)。讀者可對(duì)照附錄D提供的測(cè)驗(yàn)和練習(xí)答案,了解自己對(duì)所學(xué)內(nèi)容的掌握程度?! ?1天學(xué)通C++(第7版)》是針對(duì)C++初學(xué)者編寫的,不要求讀者有C語(yǔ)言方面的背景知識(shí),可作為高等院校教授C++課程的教材,也可供初學(xué)者自學(xué)C++時(shí)使用。
作者簡(jiǎn)介
Siddhartha Rao是一位Microsoft Visual C++
MVP,擁有在各種平臺(tái)上編寫驅(qū)動(dòng)程序和應(yīng)用程序的豐富經(jīng)驗(yàn)。他受聘于SAP AG,當(dāng)前為SAP Product Security
India的負(fù)責(zé)人,主要職責(zé)包括制定軟件開(kāi)發(fā)最佳實(shí)踐,以確保SAP軟件的安全和全球競(jìng)爭(zhēng)力。
書籍目錄
第1章 緒論
1.1 C++簡(jiǎn)史
1.1.1 與C語(yǔ)言的關(guān)系
1.1.2 C++的優(yōu)點(diǎn)
1.1.3 C++標(biāo)準(zhǔn)的發(fā)展歷程
1.1.4 哪些人使用C++程序
1.2 編寫C++應(yīng)用程序
1.2.1 生成可執(zhí)行文件的步驟
1.2.2 分析并修復(fù)錯(cuò)誤
1.2.3 集成開(kāi)發(fā)環(huán)境
1.2.4 編寫第一個(gè)C++應(yīng)用程序
1.2.5 生成并執(zhí)行第一個(gè)C++應(yīng)用程序
1.2.6 理解編譯錯(cuò)誤
1.3 C++11新增的功能
1.4 總結(jié)
1.5 問(wèn)與答
1.6 作業(yè)
1.6.1 測(cè)驗(yàn)
1.6.2 練習(xí)
第2章 C++程序的組成部分
2.1 Hello World程序的組成部分
2.1.1 預(yù)處理器編譯指令#include
2.1.2 程序的主體-main()
2.1.3 返回值
2.2 名稱空間的概念
2.3 C++代碼中的注釋
2.4 C++函數(shù)
2.5 使用std::cin和std::cout執(zhí)行基本輸入輸出操作
2.6 總結(jié)
2.7 問(wèn)與答
2.8 作業(yè)
2.8.1 測(cè)驗(yàn)
2.8.2 練習(xí)
第3章 使用變量和常量
3.1 什么是變量
3.1.1 內(nèi)存和尋址概述
3.1.2 聲明變量以訪問(wèn)和使用內(nèi)存
3.1.3 聲明并初始化多個(gè)類型相同的變量
3.1.4 理解變量的作用域
3.1.5 全局變量
3.2 編譯器支持的常見(jiàn)C++變量類型
3.2.1 使用bool變量存儲(chǔ)布爾值
3.2.2 使用char變量存儲(chǔ)字符
3.2.3 有符號(hào)整數(shù)和無(wú)符號(hào)整數(shù)的概念
3.2.4 有符號(hào)整型short、int、long和long long
3.2.5 無(wú)符號(hào)整型unsigned short、unsigned int、unsigned long和unsigned long
long
3.2.6 浮點(diǎn)類型float和double
3.3 使用sizeof確定變量的長(zhǎng)度
3.4 使用typedef替換變量類型
3.5 什么是常量
3.5.1 字面常量
3.5.2 使用const將變量聲明為常量
3.5.3 使用constexpr聲明常量
3.5.4 枚舉常量
3.5.5 使用#define定義常量
3.6 給變量和常量命名
3.7 不能用作常量或變量名的關(guān)鍵字
3.8 總結(jié)
3.9 問(wèn)與答
3.10 作業(yè)
3.10.1 測(cè)驗(yàn)
3.10.2 練習(xí)
第4章 管理數(shù)組和字符串
4.1 什么是數(shù)組
4.1.1 為何需要數(shù)組
4.1.2 聲明和初始化靜態(tài)數(shù)組
4.1.3 數(shù)組中的數(shù)據(jù)是如何存儲(chǔ)的
4.1.4 訪問(wèn)存儲(chǔ)在數(shù)組中的數(shù)據(jù)
4.1.5 修改存儲(chǔ)在數(shù)組中的數(shù)據(jù)
4.2 多維數(shù)組
4.2.1 聲明和初始化多維數(shù)組
4.2.2 訪問(wèn)多維數(shù)組中的元素
4.3 動(dòng)態(tài)數(shù)組
4.4 C風(fēng)格字符串
4.5 C++字符串:使用std::string
4.6 總結(jié)
4.7 問(wèn)與答
4.8 作業(yè)
4.8.1 測(cè)驗(yàn)
4.8.2 練習(xí)
第5章 使用表達(dá)式、語(yǔ)句和運(yùn)算符
5.1 語(yǔ)句
5.2 復(fù)合語(yǔ)句(語(yǔ)句塊)
5.3 使用運(yùn)算符
5.3.1 賦值運(yùn)算符(=)
5.3.2 理解左值和右值
5.3.3 加法運(yùn)算符(+)、減法運(yùn)算符、乘法運(yùn)算符(*)、除法運(yùn)算符(/)和求模運(yùn)算符(%)
5.3.4 遞增運(yùn)算符(++)和遞減運(yùn)算符(——)
5.3.5 前綴還是后綴
5.3.6 相等運(yùn)算符(==)和不等運(yùn)算符(!=)
5.3.7 關(guān)系運(yùn)算符
5.3.8 邏輯運(yùn)算NOT、AND、OR和XOR
5.3.9 使用C++邏輯運(yùn)算NOT(!)、AND(&&)和OR(||)
5.3.10 按位運(yùn)算符NOT(~)、AND(&)、OR(|)和XOR(^)
5.3.11 按位右移運(yùn)算符(>>)和左移運(yùn)算符()訪問(wèn)成員
9.2 關(guān)鍵字public和private
9.2.1 使用關(guān)鍵字private實(shí)現(xiàn)數(shù)據(jù)抽象
9.3 構(gòu)造函數(shù)
9.3.1 聲明和實(shí)現(xiàn)構(gòu)造函數(shù)
9.3.2 何時(shí)及如何使用構(gòu)造函數(shù)
9.3.3 重載構(gòu)造函數(shù)
9.3.4 沒(méi)有默認(rèn)構(gòu)造函數(shù)的類
9.3.5 帶默認(rèn)值的構(gòu)造函數(shù)參數(shù)
9.3.6 包含初始化列表的構(gòu)造函數(shù)
9.4 析構(gòu)函數(shù)
9.4.1 聲明和實(shí)現(xiàn)析構(gòu)函數(shù)
9.4.2 何時(shí)及如何使用析構(gòu)函數(shù)
9.5 復(fù)制構(gòu)造函數(shù)
9.5.1 淺復(fù)制及其存在的問(wèn)題
9.5.2 使用復(fù)制構(gòu)造函數(shù)確保深復(fù)制
9.5.3 有助于改善性能的移動(dòng)構(gòu)造函數(shù)
9.6 構(gòu)造函數(shù)和析構(gòu)函數(shù)的其他用途
9.6.1 不允許復(fù)制的類
9.6.2 只能有一個(gè)實(shí)例的單例類
9.6.3 禁止在棧中實(shí)例化的類
9.7 this指針
9.8 將sizeof()用于類
9.9 結(jié)構(gòu)不同于類的地方
9.10 聲明友元
9.11 總結(jié)
9.12 問(wèn)與答
9.13 作業(yè)
9.13.1 測(cè)驗(yàn)
9.13.2 練習(xí)
第10章 實(shí)現(xiàn)繼承
10.1 繼承基礎(chǔ)
10.1.1 繼承和派生
10.1.2 C++派生語(yǔ)法
10.1.3 訪問(wèn)限定符protected
10.1.4 基類初始化-向基類傳遞參數(shù)
10.1.5 在派生類中覆蓋基類的方法
10.1.6 調(diào)用基類中被覆蓋的方法
10.1.7 在派生類中調(diào)用基類的方法
10.1.8 在派生類中隱藏基類的方法
10.1.9 構(gòu)造順序
10.1.10 析構(gòu)順序
10.2 私有繼承
10.3 保護(hù)繼承
10.4 切除問(wèn)題
10.5 多繼承
10.6 總結(jié)
10.7 問(wèn)與答
10.8 作業(yè)
10.8.1 測(cè)驗(yàn)
10.8.2 練習(xí)
第11章 多態(tài)
11.1 多態(tài)基礎(chǔ)
11.1.1 為何需要多態(tài)行為
11.1.2 使用虛函數(shù)實(shí)現(xiàn)多態(tài)行為
11.1.3 為何需要虛構(gòu)造函數(shù)
11.1.4 虛函數(shù)的工作原理——理解虛函數(shù)表
11.1.5 抽象基類和純虛函數(shù)
11.2 使用虛繼承解決菱形問(wèn)題
11.3 可將復(fù)制構(gòu)造函數(shù)聲明為虛函數(shù)嗎
11.4 總結(jié)
11.5 問(wèn)與答
11.6 作業(yè)
11.6.1 測(cè)驗(yàn)
11.6.2 練習(xí)
第12章 運(yùn)算符類型與運(yùn)算符重載
12.1 C++運(yùn)算符
12.2 單目運(yùn)算符
12.2.1 單目運(yùn)算符的類型
12.2.2 單目遞增與單目遞減運(yùn)算符
12.2.3 轉(zhuǎn)換運(yùn)算符
12.2.4 解除引用運(yùn)算符(*)和成員選擇運(yùn)算符(->)
12.3 雙目運(yùn)算符
12.3.1 雙目運(yùn)算符的類型
12.3.2 雙目加法與雙目減法運(yùn)算符
12.3.3 實(shí)現(xiàn)運(yùn)算符+=與(=
12.3.4 重載等于運(yùn)算符(==)和不等運(yùn)算符(!=)
12.3.5 重載運(yùn)算符、=
12.3.6 重載復(fù)制賦值運(yùn)算符(=)
12.3.7 下標(biāo)運(yùn)算符
12.4 函數(shù)運(yùn)算符operator()
12.5 不能重載的運(yùn)算符
12.6 總結(jié)
12.7 問(wèn)與答
12.8 作業(yè)
12.8.1 測(cè)驗(yàn)
12.8.2 練習(xí)
第13章 類型轉(zhuǎn)換運(yùn)算符
13.1 為何需要類型轉(zhuǎn)換
13.2 為何有些C++程序員不喜歡C風(fēng)格類型轉(zhuǎn)換
13.3 C++類型轉(zhuǎn)換運(yùn)算符
13.3.1 使用static_cast
13.3.2 使用dynamic_cast和運(yùn)行階段類型識(shí)別
13.3.3 使用reinterpret_cast
13.3.4 使用const_cast
13.4 C++類型轉(zhuǎn)換運(yùn)算符存在的問(wèn)題
13.5 總結(jié)
13.6 問(wèn)與答
13.7 作業(yè)
13.7.1 測(cè)驗(yàn)
13.7.2 練習(xí)
第14章 宏和模板簡(jiǎn)介
14.1 預(yù)處理器與編譯器
14.2 使用#define定義常量
14.3 使用#define編寫宏函數(shù)
14.3.1 為什么要使用括號(hào)
14.3.2 使用assert宏驗(yàn)證表達(dá)式
14.3.3 使用宏函數(shù)的優(yōu)點(diǎn)和缺點(diǎn)
14.4 模板簡(jiǎn)介
14.4.1 模板聲明語(yǔ)法
14.4.2 各種類型的模板聲明
14.4.3 模板函數(shù)
14.4.4 模板與類型安全
14.4.5 模板類
14.4.6 模板的實(shí)例化和具體化
14.4.7 聲明包含多個(gè)參數(shù)的模板
14.4.8 聲明包含默認(rèn)參數(shù)的模板
14.4.9 一個(gè)模板示例
14.4.10 模板類和靜態(tài)成員
14.4.11 在實(shí)際C++編程中使用模板
14.5 總結(jié)
14.6 問(wèn)與答
14.7 作業(yè)
14.7.1 測(cè)驗(yàn)
14.7.2 練習(xí)
第15章 標(biāo)準(zhǔn)模板庫(kù)簡(jiǎn)介
15.1 STL容器
15.1.1 順序容器
15.1.2 關(guān)聯(lián)容器
15.1.3 選擇正確的容器
15.1.4 容器適配器
15.2 STL迭代器
15.3 STL算法
15.4 使用迭代器在容器和算法之間交互
15.5 STL字符串類
15.6 總結(jié)
15.7 問(wèn)與答
15.8 作業(yè)
第16章 STL string類
16.1 為何需要字符串操作類
16.2 使用STL string類
16.2.1 實(shí)例化和復(fù)制STL string
16.2.2 訪問(wèn)std::string的字符內(nèi)容
16.2.3 拼接字符串
16.2.4 在string中查找字符或子字符串
16.2.5 截短STL string
16.2.6 字符串反轉(zhuǎn)
16.2.7 字符串的大小寫轉(zhuǎn)換
16.3 基于模板的STL string實(shí)現(xiàn)
16.4 總結(jié)
16.5 問(wèn)與答
16.6 作業(yè)
16.6.1 測(cè)驗(yàn)
16.6.2 練習(xí)
第17章 STL動(dòng)態(tài)數(shù)組類
17.1 std::vector的特點(diǎn)
17.2 典型的vector操作
17.2.1 實(shí)例化vector
17.2.2 使用push_back()在末尾插入元素
17.2.3 使用insert()在指定位置插入元素
17.2.4 使用數(shù)組語(yǔ)法訪問(wèn)vector中的元素
17.2.5 使用指針語(yǔ)法訪問(wèn)vector中的元素
17.2.6 刪除vector中的元素
17.3 理解大小和容量
17.4 STL deque 類
17.5 總結(jié)
17.6 問(wèn)與答
17.7 作業(yè)
17.7.1 測(cè)驗(yàn)
17.7.2 練習(xí)
第18章 STL list和forward_list
18.1 std::list的特點(diǎn)
18.2 基本的list操作
18.2.1 實(shí)例化std::list對(duì)象
18.2.2 在list開(kāi)頭或末尾插入元素
18.2.3 在list中間插入元素
18.2.4 刪除list中的元素
18.3 對(duì)list中的元素進(jìn)行反轉(zhuǎn)和排序
18.3.1 使用list::reverse()反轉(zhuǎn)元素的排列順序
18.3.2 對(duì)元素進(jìn)行排序
18.3.3 對(duì)包含對(duì)象的list進(jìn)行排序以及刪除其中的元素
18.4 總結(jié)
18.5 問(wèn)與答
18.6 作業(yè)
18.6.1 測(cè)驗(yàn)
18.6.2 練習(xí)
第19章 STL集合類
19.1 簡(jiǎn)介
19.2 STL set和multiset的基本操作
19.2.1 實(shí)例化std::set對(duì)象
19.2.2 在set或multiset中插入元素
19.2.3 在STL set或multiset中查找元素
19.2.4 刪除STL set或multiset中的元素
19.3 使用STL set和multiset的優(yōu)缺點(diǎn)
19.4 總結(jié)
19.5 問(wèn)與答
19.6 作業(yè)
19.6.1 測(cè)驗(yàn)
19.6.2 練習(xí)
第20章 STL映射類
20.1 STL映射類簡(jiǎn)介
20.2 std::map和std::multimap的基本操作
20.2.1 實(shí)例化std::map和std::multimap
20.2.2 在STL map或multimap中插入元素
20.2.3 在STL map或multimap中查找元素
20.2.4 在STL multimap中查找元素
20.2.5 刪除STL map或multimap中的元素
20.3 提供自定義的排序謂詞
20.3.1 散列表的工作原理
20.3.2 使用C++11散列表unordered_map和unordered_multimap
20.4 總結(jié)
20.5 問(wèn)與答
20.6 作業(yè)
20.6.1 測(cè)驗(yàn)
20.6.2 練習(xí)
第21章 理解函數(shù)對(duì)象
21.1 函數(shù)對(duì)象與謂詞的概念
21.2 函數(shù)對(duì)象的典型用途
21.2.1 一元函數(shù)
21.2.2 一元謂詞
21.2.3 二元函數(shù)
21.2.4 二元謂詞
21.3 總結(jié)
21.4 問(wèn)與答
21.5 作業(yè)
21.5.1 測(cè)驗(yàn)
21.5.2 練習(xí)
第22章 C++ lambda表達(dá)式
22.1 lambda表達(dá)式是什么
22.2 如何定義lambda表達(dá)式
22.3 一元函數(shù)對(duì)應(yīng)的lambda表達(dá)式
22.4 一元謂詞對(duì)應(yīng)的lambda表達(dá)式
22.5 通過(guò)捕獲列表接受狀態(tài)變量的lambda表達(dá)式
22.6 lambda表達(dá)式的通用語(yǔ)法
22.7 二元函數(shù)對(duì)應(yīng)的lambda表達(dá)式
22.8 二元謂詞對(duì)應(yīng)的lambda表達(dá)式
22.9 總結(jié)
22.10 問(wèn)與答
22.11 作業(yè)
22.11.1 測(cè)驗(yàn)
22.11.2 練習(xí)
第23章 STL算法
23.1 什么是STL算法
23.2 STL算法的分類
23.2.1 非變序算法
23.2.2 變序算法
23.3 使用STL算法
23.3.1 根據(jù)值或條件查找元素
23.3.2 計(jì)算包含給定值或滿足給定條件的元素?cái)?shù)
23.3.3 在集合中搜索元素或序列
23.3.4 將容器中的元素初始化為指定值
23.3.5 使用std::generate()將元素設(shè)置為運(yùn)行階段生成的值
23.3.6 使用for_each()處理指定范圍內(nèi)的元素
23.3.7 使用std::transform()對(duì)范圍進(jìn)行變換
23.3.8 復(fù)制和刪除操作
23.3.9 替換值以及替換滿足給定條件的元素
23.3.10 排序、在有序集合中搜索以及刪除重復(fù)元素
23.3.11 將范圍分區(qū)
23.3.12 在有序集合中插入元素
23.4 總結(jié)
23.5 問(wèn)與答
23.6 作業(yè)
23.6.1 測(cè)驗(yàn)
23.6.2 練習(xí)
第24章 自適應(yīng)容器:棧和隊(duì)列
24.1 棧和隊(duì)列的行為特征
24.1.1 棧
24.1.2 隊(duì)列
24.2 使用STL stack類
24.2.1 實(shí)例化stack
24.2.2 stack的成員函數(shù)
24.2.3 使用push()和pop()在棧頂插入和刪除元素
24.3 使用STL queue類
24.3.1 實(shí)例化queue
24.3.2 queue的成員函數(shù)
24.3.3 使用push()在隊(duì)尾插入以及使用pop()從隊(duì)首刪除
24.4 使用STL優(yōu)先級(jí)隊(duì)列
24.4.1 實(shí)例化priority_queue類
24.4.2 priority_queue的成員函數(shù)
24.4.3
使用push()在priority_queue末尾插入以及使用pop()在priority_queue開(kāi)頭刪除
24.5 總結(jié)
24.6 問(wèn)與答
24.7 作業(yè)
24.7.1 測(cè)驗(yàn)
24.7.2 練習(xí)
第25章 使用STL位標(biāo)志
25.1 bitset類
25.2 使用std::bitset及其成員
25.2.1 std:bitset的運(yùn)算符
25.2.2 std::bitset的成員方法
25.3 vector
25.3.1 實(shí)例化vector
25.3.2 vector的成員函數(shù)和運(yùn)算符
25.4 總結(jié)
25.5 問(wèn)與答
25.6 作業(yè)
25.6.1 測(cè)驗(yàn)
25.6.2 練習(xí)
第26章 理解智能指針
26.1 什么是智能指針
26.1.1 常規(guī)(原始)指針存在的問(wèn)題
26.1.2 智能指針有何幫助
26.2 智能指針是如何實(shí)現(xiàn)的
26.3 智能指針類型
26.3.1 深復(fù)制
26.3.2 寫時(shí)復(fù)制機(jī)制
26.3.3 引用計(jì)數(shù)智能指針
26.3.4 引用鏈接智能指針
26.3.5 破壞性復(fù)制
26.4 深受歡迎的智能指針庫(kù)
26.5 總結(jié)
26.6 問(wèn)與答
26.7 作業(yè)
26.7.1 測(cè)試
26.7.2 練習(xí)
第27章 使用流進(jìn)行輸入和輸出
27.1 流的概述
27.2 重要的C++流類和流對(duì)象
27.3 使用std::cout將指定格式的數(shù)據(jù)寫入控制臺(tái)
27.3.1 使用std::cout修改數(shù)字的顯示格式
27.3.2 使用std::cout對(duì)齊文本和設(shè)置字段寬度
27.4 使用std::cin進(jìn)行輸入
27.4.1 使用std::cin將輸入讀取到基本類型變量中
27.4.2 使用std::cin:get將輸入讀取到char數(shù)組中
27.4.3 使用std::cin將輸入讀取到std::string中
27.5 使用std::fstream處理文件
27.5.1 使用open()和close()打開(kāi)和關(guān)閉文件
27.5.2 使用open()創(chuàng)建文本文件并使用運(yùn)算符>讀取文本文件
27.5.4 讀寫二進(jìn)制文件
27.6 使用std::stringstream對(duì)字符串進(jìn)行轉(zhuǎn)換
27.7 總結(jié)
27.8 問(wèn)與答
27.9 作業(yè)
27.9.1 測(cè)驗(yàn)
27.9.2 練習(xí)
第28章 異常處理
28.1 什么是異常
28.2 導(dǎo)致異常的原因
28.3 使用try和catch捕獲異常
28.3.1 使用catch(...)處理所有異常
28.3.2 捕獲特定類型的異常
28.3.3 使用throw引發(fā)特定類型的異常
28.4 異常處理的工作原理
28.4.1 std::exception類
28.4.2 從std::exception派生出自定義異常類
28.5 總結(jié)
28.6 問(wèn)與答
28.7 作業(yè)
28.7.1 測(cè)驗(yàn)
28.7.2 練習(xí)
第29章 繼續(xù)前行
29.1 當(dāng)今的處理器有何不同
29.2 如何更好地利用多個(gè)內(nèi)核
29.2.1 線程是什么
29.2.2 為何要編寫多線程應(yīng)用程序
29.2.3 線程如何交換數(shù)據(jù)
29.2.4 使用互斥量和信號(hào)量同步線程
29.2.5 多線程技術(shù)帶來(lái)的問(wèn)題
29.3 編寫杰出的C++代碼
29.4 更深入地學(xué)習(xí)C++
29.4.1 在線文檔
29.4.2 提供指南和幫助的社區(qū)
29.5 總結(jié)
29.6 問(wèn)與答
29.7 作業(yè)
附錄A 二進(jìn)制和十六進(jìn)制
A.1 十進(jìn)制
A.2 二進(jìn)制
A.2.1 計(jì)算機(jī)為何使用二進(jìn)制
A.2.2 位和字節(jié)
A.2.3 1KB相當(dāng)于多少字節(jié)
A.3 十六進(jìn)制
A.4 不同進(jìn)制之間的轉(zhuǎn)換
A.4.1 通用轉(zhuǎn)換步驟
A.4.2 從十進(jìn)制轉(zhuǎn)換為二進(jìn)制
A.4.3 從十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
附錄B C++關(guān)鍵字
附錄C 運(yùn)算符優(yōu)先級(jí)
附錄D 答案
附錄E ASCII碼
章節(jié)摘錄
版權(quán)頁(yè): 23.4總結(jié) 本章介紹了STL中最重要、功能最強(qiáng)大的方面:算法。在本章中,讀者了解了各種類型的算法,并通過(guò)示例對(duì)其用法有更清晰的認(rèn)識(shí)。 23.5問(wèn)與答 問(wèn):諸如std::transform()等變序算法能否用于關(guān)聯(lián)容器(如std::set)? 答:即使可以,也不應(yīng)這樣做。應(yīng)將關(guān)聯(lián)容器的內(nèi)容視為常量,這是因?yàn)殛P(guān)聯(lián)容器在插入元素時(shí)進(jìn)行排序,因此元素的相對(duì)位置不僅對(duì)find()等函數(shù)來(lái)說(shuō)很重要,對(duì)容器的效率也很重要。因此,不應(yīng)將諸如std::transform()等變序算法用于STL set。 問(wèn):要將順序容器的每個(gè)元素都設(shè)置為特定的值,可使用std::transform()嗎? 答:雖然可以使用std::transform(),但使用fill()或fill_n()更合適。 問(wèn):copy_backward()是否會(huì)反轉(zhuǎn)目標(biāo)容器中元素的排列順序? 答:不會(huì)。STL算法copy_backward()按相反的順序復(fù)制元素,但不改變?cè)氐呐帕许樞?,即它從范圍末尾開(kāi)始復(fù)制到開(kāi)頭。如果要反轉(zhuǎn)集合中元素的排列順序,應(yīng)使用std::reverse()。 問(wèn):是否應(yīng)對(duì)list使用std::sort()? 答:std::sort()可用于list,用法與用于其他順序容器一樣。然而,list需要保持一個(gè)特殊特征:對(duì)list的操作不會(huì)導(dǎo)致現(xiàn)有迭代器失效,而std::son()不能保證該特征得以保持。因此,STL list通過(guò)成員函數(shù)list::sort()提供了 sort算法。應(yīng)使用該函數(shù),因?yàn)樗_保指向list中元素的迭代器不會(huì)失效,即使元素的相對(duì)位置發(fā)生了變化。 問(wèn):為什么在將元素插入到有序范圍中時(shí),使用Iower_bound0或uppeLbound()等函數(shù)很重要? 答:這兩個(gè)函數(shù)分別提供有序集合中的第一個(gè)位置和最后一個(gè)位置,將元素插入這些位置時(shí)不會(huì)破壞集合的有序狀態(tài)。 23.6作業(yè) 作業(yè)包括測(cè)驗(yàn)和練習(xí),前者幫助讀者加深對(duì)所學(xué)知識(shí)的理解,后者提供了使用新學(xué)知識(shí)的機(jī)會(huì)。請(qǐng)盡量先完成測(cè)驗(yàn)和練習(xí)題,然后再對(duì)照附錄D的答案。在繼續(xù)學(xué)習(xí)下一章前,請(qǐng)務(wù)必弄瞳這些答案。 23.6.1測(cè)驗(yàn) 1.要將list中滿足特定條件的元素刪除,應(yīng)使用std::remove_if()還是list::remove.if()? 2.假設(shè)有一個(gè)包含Contactltem對(duì)象的list,在沒(méi)有顯式指定二元謂詞時(shí),函數(shù)list::sort()將如何對(duì)這些元素進(jìn)行排序? 3.STL算法generate()將調(diào)用函數(shù)generator()多少次? 4.std::transform()與std::foreach()之間的區(qū)別何在? 23.6.2 練習(xí) 1.編寫一個(gè)二元謂詞,它接受字符串作為輸入?yún)?shù),并根據(jù)不區(qū)分大小寫的比較結(jié)果返回一個(gè)值。 2.演示STL算法(如copy)如何使用迭代器實(shí)現(xiàn)其功能——復(fù)制兩個(gè)類型不同的容器存儲(chǔ)的序列,而無(wú)需知道目標(biāo)集合的特征。
媒體關(guān)注與評(píng)論
對(duì)沒(méi)有任何編程經(jīng)驗(yàn)的新人和有其他語(yǔ)言編程經(jīng)驗(yàn)的人來(lái)說(shuō),這是一本卓越的C++入門圖書?!?dú)立評(píng)論人
編輯推薦
暢銷全球的C++經(jīng)典入門教程全面涵蓋C++11新標(biāo)準(zhǔn)幫助讀者編寫高效的C++應(yīng)用程序中文版累計(jì)銷售超50000冊(cè)
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載