日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

【Accelerated C++】重点回顾

發(fā)布時(shí)間:2025/3/21 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Accelerated C++】重点回顾 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

看了劉未鵬推薦過(guò)的C++入門經(jīng)典《Accelerated C++》,讀此書的過(guò)程中一再感嘆“大師就是大師,他可以很輕松的把東西的本質(zhì)呈現(xiàn)在你面前”,這本書采用了現(xiàn)實(shí)中與我們很接近的學(xué)生成績(jī)信息管理這一例子,層層推進(jìn),一步一步引出C++中的知識(shí)點(diǎn),根據(jù)任務(wù)提出解決方案,讓你感受到C++中一些設(shè)計(jì)的比要性。

一下是我讀此書時(shí)做的筆記,謹(jǐn)用于記憶。


第一章、使用字符串


1、為什么需要緩沖?

????輸入操作的副作用:它總是詢問(wèn)用戶名字的請(qǐng)求顯示在計(jì)算機(jī)的輸出設(shè)備上。
??? 不管還有多少字符等待輸入,很多系統(tǒng)在向輸出設(shè)備寫入字符時(shí)需要花費(fèi)大量的時(shí)間。
??? 為了避免無(wú)法及時(shí)響應(yīng)每個(gè)輸出請(qǐng)求,標(biāo)準(zhǔn)庫(kù)使用了緩沖來(lái)積累需要輸出的東西,然后等到必要的時(shí)候,刷新緩沖來(lái)把緩沖里面的內(nèi)容寫到輸出設(shè)備中。
??? 這樣就可以通過(guò)一次寫入完成多次輸出操作。

2、促使系統(tǒng)刷新緩沖的三個(gè)事件:
??? 1)、緩沖滿了。
??? 2)、標(biāo)準(zhǔn)庫(kù)被要求讀取標(biāo)準(zhǔn)輸入流。
??? 3)、顯示的刷新緩沖。

3、應(yīng)該適時(shí)的刷新輸出緩沖,防止輸出擁塞在系統(tǒng)緩沖中。

4、如果一個(gè)變量是常量(const),必須在定義的時(shí)候初始化,否則沒(méi)有機(jī)會(huì)賦值了。
??? 但是,初始化時(shí)const變量的值,可以不是常數(shù)(constant)。

5、操作符的一個(gè)永遠(yuǎn)不變的特性就是它的結(jié)合性。


第三章、使用批量數(shù)據(jù)


1、讀取流失敗的原因:
??? 1)、遇到輸入文件的結(jié)束標(biāo)志
??? 2)、輸入的值的類型和需要讀入的變量的類型不兼容。
??? 3)、系統(tǒng)可能檢測(cè)到輸入設(shè)備的硬件故障。

2、應(yīng)該用size_type(無(wú)符號(hào)整型),用來(lái)表示容器大小-----這是一個(gè)好習(xí)慣。
??? 如: typedef vector<double>::size_type vec;

3、vector類型定義:
??? v.end() 返回v中最后一個(gè)元素的‘下一個(gè)位置’。

4、while(cin>>x)?
??? 把適當(dāng)類型的值讀入x中,并且檢測(cè)流的狀態(tài)。
??? 如果流出錯(cuò),檢測(cè)失敗;否則,檢測(cè)成功,然后執(zhí)行while語(yǔ)句體。
? ??

第四章、組織程序和數(shù)據(jù)


1、引用
??? vector<double> homework;
??? vector<double>& hw = homework;
????
??? hw是homework的別名。對(duì)hw的任何操作都等價(jià)于對(duì)homework的同樣操作,反之亦然。

??? const vector<double>& chw = homework;

??? chw仍然是homework的別名。但是const保證我們不會(huì)chw作任何改變它的值的操作。
??? 因?yàn)橐檬窃葘?duì)象的別名,所以不存在引用的引用。

??? const vector<double>& chw1 = chw;
??? 定義一個(gè)引用的引用和定義一個(gè)人原先對(duì)象的引用效果相同。

??? const vector<double>&, 意思是要求系統(tǒng)允許我們直接訪問(wèn)相關(guān)的實(shí)參,而不是復(fù)制實(shí)參,并且保證不會(huì)改變形參的值(否則實(shí)參的值也會(huì)被改變)。

2、左值
??? 一個(gè)左值是一個(gè)非臨時(shí)性的對(duì)象。
??? 比如:如果一個(gè)變量是一個(gè)引用,或者是調(diào)用可以返回引用的函數(shù)的結(jié)果,那么這個(gè)變量就是一個(gè)左值。

3、read_hw( cin, homework );

??? istream& read_hw( istream& in, vector<double>& hw )
??? {
??????? if( in ){
??????????? hw.clear();
??????????? hw.push_back(1);

??????????? in.clear();
??????? }
??????? return in;?
??? }?


4、3種函數(shù)形參
??? 1)、vector<double>????????? -->復(fù)制實(shí)參(即便實(shí)參是一個(gè)很大的vector對(duì)象,效率低下)---不會(huì)改變vector對(duì)象本身。
??? 2)、const vector<double>&?? --> &表明無(wú)須復(fù)制實(shí)參(效率高),const保證不會(huì)改變形參 ---簡(jiǎn)單的內(nèi)置類型(如:int,double)沒(méi)有必要使用const &
??? 3)、vector<double>&???????? -->非常量引用
????
??? 與非常量引用的形參對(duì)應(yīng)的實(shí)參必須是一個(gè)‘左值’(非臨時(shí)性的對(duì)象),而值傳遞與常量引用對(duì)應(yīng)的實(shí)參可以是任意值。


5、一個(gè)好的經(jīng)驗(yàn):避免一個(gè)單獨(dú)的語(yǔ)句產(chǎn)生多個(gè)副作用。拋出一個(gè)異常是一個(gè)副作用,所以拋出一個(gè)異常的語(yǔ)句不應(yīng)該再產(chǎn)生其他副作用,尤其是輸入和輸出。

6、謂詞。
??? 謂詞就是可以產(chǎn)生真假值的函數(shù)。如下sort函數(shù)的謂詞:
??????? bool compare( const Student_info& x, const Student_info& y )
??????? {
??????????? return x.name < y.name;?
??????? }

??????? sort( student.begin(), student.end(), compare );?



第五章、使用序列式容器并分析字符


1、迭代器
??? 一個(gè)迭代器是一個(gè)值,它能夠:
??????? 1)、標(biāo)識(shí)一個(gè)容器和容易中的一個(gè)元素
??????? 2)、允許檢測(cè)元素中保存的值
??????? 3)、提供在容器元素之間移動(dòng)的操作
??????? 4)、使用容器可用有效處理的方式來(lái)約束可用的操作
??? 因?yàn)榈鞯男袨轭愃扑饕?#xff0c;所以我們常常可用把使用索引的程序重寫為使用迭代器。

2、迭代器操作:
??? 在一個(gè)迭代器上使用*(解引用操作符),會(huì)返回一個(gè)左值,也就是這個(gè)迭代器指向的元素:
??????? cout<< (*iter).name;?
??????? 如何是*iter.name,編譯器會(huì)誤以為是*(iter.name)
??????? 但是可以使用:iter->name 替換


3、刪除iter的后果:
??? 刪除iter表示的元素會(huì)使這個(gè)迭代器無(wú)效。
????
??? 如果一個(gè)元素移動(dòng)了位置那么指向它的任何一個(gè)迭代器都是無(wú)意義的-->?
??????? 在一個(gè)vector的對(duì)象上調(diào)用erase,會(huì)使被刪除元素之后的所有元素的迭代器都無(wú)效。
??? 所以:可以iter = student。erase(iter); 指向刪除后的元素。


4、vector
??? vector提供庫(kù)容器中功能最強(qiáng)大的迭代器--->隨機(jī)訪問(wèn)迭代器。
????
??? 雖然使用vector時(shí),采用的都是動(dòng)態(tài)分配元素空間,但是vector提供了預(yù)先分哦元素空間的機(jī)制以及指示vector分配空間的一個(gè)操作,但是沒(méi)有使用額外的空間,這樣是為了避免重復(fù)分配空間的開(kāi)銷。
????
??? v.reserve(n) --預(yù)留空間---并不初始化它們。這個(gè)操作不改變?nèi)萜鞯拈L(zhǎng)度。它影響的知識(shí)調(diào)用insert或者push_back函數(shù)時(shí),vector分配內(nèi)存的頻率。
??? v.resize(n)? --給v一個(gè)等于n的新長(zhǎng)度。如果n比v當(dāng)前的長(zhǎng)度小,n以后的元素就都會(huì)被刪除。若n比當(dāng)前長(zhǎng)度大,新的元素會(huì)被添加到v中,并且會(huì)根據(jù)v包含的類型來(lái)適當(dāng)?shù)某跏蓟?br />

5、list與vector的區(qū)別:
??? list的結(jié)構(gòu)復(fù)雜,比起vector順序訪問(wèn)上慢一些。--->在末尾插入和刪除的時(shí)候,vector好過(guò)list,但是在容器的中間刪除很多元素時(shí),list快很多。
??? list不支持索引。
??? 給vector添加一個(gè)元素時(shí),為新元素分配空間可能會(huì)引起整個(gè)vector的重新分配。

??? 由于list不支持隨機(jī)訪問(wèn),因此它不能使用標(biāo)準(zhǔn)庫(kù)的sort,但是它有自己的sort:
??????? list<Student_info> student;? student.sort(compare);?????


第六章、使用庫(kù)算法


1、每個(gè)容器(也包括string類)都提供了相應(yīng)的迭代器類型。迭代器使我們可以遍歷一個(gè)容器,并且檢測(cè)其中的元素。熱情,標(biāo)準(zhǔn)庫(kù)保證了每種迭代器都用相同的接口來(lái)操作。

2、與容器和迭代器相同,算法也使用了一致的接口規(guī)約。

3、copy( bottom.begin(), bottom.end(), back_inserter(ret) );?
??? copy是一個(gè)泛型算法, back_inserter 是一個(gè)迭代器適配器。

??? 泛型算法:一種不屬于任何特殊容器的算法,它可以從其參數(shù)類型知道如何訪問(wèn)它使用的數(shù)據(jù)。

4、copy( begin, end, out ); ---> while( begin != end ) *out++ = *begin++;?
??? 唯一的區(qū)別是while語(yǔ)句體改變了迭代器的值,但是copy算法沒(méi)有改變。

5、it = begin++; 等價(jià)于:it = begin; ++begin;?

6、不能把重載函數(shù)作為參數(shù)傳遞給一個(gè)模板函數(shù)。

7、算法、容器和迭代器
??? 算法是作用在容器元素上的----它們并不作用在容器上。
????
8、迭代器適配器:
??? 是產(chǎn)生迭代器的函數(shù)。
??? 最常用的是生成insert_iterator的適配器,它生成的迭代器可以動(dòng)態(tài)的增長(zhǎng)關(guān)聯(lián)的容器。這樣的跌大全可以安全的用作復(fù)制類型的算法的目的地。????


第七章、使用關(guān)聯(lián)式容器


1、序列式容器
??? 序列式容器中的元素都是按照指定的次序來(lái)排列。當(dāng)在push_back或者插入新的元素時(shí)候,每個(gè)元素的位置都不會(huì)變化,除非對(duì)容器進(jìn)行一些重新排序的操作。

2、關(guān)聯(lián)式容器
??? 最常見(jiàn)的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)是‘鍵值對(duì)’,每個(gè)值都與獨(dú)一無(wú)二的鍵相對(duì)應(yīng),這樣我們可以根據(jù)元素的鍵,來(lái)快速的插入或者取回對(duì)應(yīng)的元素。

3、兩者的區(qū)別:
??? 關(guān)聯(lián)式容器是自排列的。

4、map
??? map<string, int> counters;?
??? (string: 鍵, int: 值 ) 稱這個(gè)容器是string映射到int的map。
????
??? 鍵總是const型的--防止被隱式的改變?cè)卦趍ap中的位置。

5、關(guān)聯(lián)數(shù)組的性能:
??? 這些數(shù)組很可能是按照一種叫做哈希表的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的。哈希表速度很快,但是也為此付出了一些代價(jià):
??????? 1)對(duì)于每種類型的鍵,人們都必須提供一個(gè)哈希函數(shù),根據(jù)鍵的值,來(lái)計(jì)算出一個(gè)合適的整數(shù)。
??????? 2)哈希表的性能與哈希函數(shù)的實(shí)現(xiàn)細(xì)節(jié)密切相關(guān)。
??????? 3)一般來(lái)說(shuō),很難按照有用的順序重新取得哈希表的元素。C++的關(guān)聯(lián)式容器很難按照哈希表來(lái)實(shí)現(xiàn)。
??????? 4)鍵類型需要實(shí)現(xiàn)的只是<操作符或者是相等性比較函數(shù)。
??????? 5)使用給定的鍵來(lái)訪問(wèn)關(guān)聯(lián)式容器中的元素所消耗的時(shí)間是容器中元素總數(shù)的對(duì)數(shù),而不管鍵的值是什么。
??????? 6)關(guān)聯(lián)式容器總是根據(jù)鍵來(lái)排序。

??????? 換句話說(shuō),雖然c++關(guān)聯(lián)式容器明顯比最好的哈希表數(shù)據(jù)結(jié)構(gòu)慢,但是它的性能卻要比其他的數(shù)據(jù)結(jié)構(gòu)好的多,而且由于他們自動(dòng)排序的機(jī)制,所以他們也要比哈希表方便很多。
????
??? C++庫(kù)使用的是一種平衡的,可以自我調(diào)節(jié)的樹結(jié)構(gòu)來(lái)實(shí)現(xiàn)關(guān)聯(lián)式容器。

6、訪問(wèn)一個(gè)不存在的鍵,會(huì)自動(dòng)生成這個(gè)鍵及值。





(未完,待續(xù)。。。)

from:?http://blog.csdn.net/cyh_24/article/details/8239633

總結(jié)

以上是生活随笔為你收集整理的【Accelerated C++】重点回顾的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久艹免费视频 | 中国女人做爰视频 | 成人免费黄 | 亚洲AV无码精品国产 | 日韩欧美综合视频 | 日韩爱爱免费视频 | 日韩一级片免费 | 操欧美女人 | 超碰97在线看 | 中文字幕无产乱码 | 性视屏| 韩国伦理片在线观看 | 91免费视频网址 | videos另类灌满极品另类 | 亚洲AV无码成人精品区明星换面 | av黄色大片 | 国产777| www.日本精品 | 亚洲人天堂 | 毛片视屏 | 中文字幕一区二区三区在线不卡 | 久久99精品久久久久久 | 日日干天天爽 | 超碰精品| 国产人成在线观看 | 欧美一区二区三区公司 | 蜜桃精品成人影片 | 羞羞色院91蜜桃 | 久久大伊人 | 成人福利视频导航 | 天天舔天天干天天操 | 欧美日韩一区免费 | 香港三级日本三级 | 日本高清不卡视频 | 亚洲色图五月天 | 国产亚洲精品aaaaaaa片 | 玖玖爱免费视频 | 国产精品suv一区二区88 | 午夜激情视频网站 | 国产第六页 | 国产人人射 | 一区二区三区在线电影 | 亚洲欧美一区二区三区孕妇 | 无限国产资源 | 麻豆精品免费视频 | 日韩少妇 | 亚洲精品国产精品乱码不卡√香蕉 | 欧美日韩大陆 | 香蕉伊人网 | 成人福利在线观看 | 无码日韩人妻精品久久蜜桃 | 日韩a毛片 | 好吊妞这里只有精品 | 爱情岛论坛亚洲自拍 | 欧美日韩在线视频一区二区 | 日韩r级在线观看 | 日本三级韩国三级美三级91 | 国产精华一区二区三区 | 黄色片网站免费看 | 日韩二级| 美女扒开尿口给男人捅 | 日批视频免费 | 一个人看的www日本高清视频 | 国产稀缺真实呦乱在线 | 亚洲精品视频免费在线观看 | 少妇精品无码一区二区免费视频 | 一本大道熟女人妻中文字幕在线 | 国产精品 色 | 懂色av蜜臀av粉嫩av喷吹 | 婷婷综合激情网 | 手机免费看av片 | 亚洲理论片 | 国产精品高清无码 | 亚洲无限码| 黑人糟蹋人妻hd中文字幕 | 亚洲欧美一区二区三区不卡 | 不卡国产视频 | 二区中文字幕 | av在线免费网址 | 久久蜜桃av一区二区天堂 | 成人亚洲视频 | 亚洲精品一区二区三区影院忠贞 | 欧美精品系列 | 在线天堂6 | 亚洲综合在线一区二区 | 国产精品一区二区麻豆 | 亚洲成人精选 | 欧美丰满熟妇bbbbbb | 欧美高潮视频 | 亚洲一区二区三区日韩 | 国语对白久久 | 国产福利免费视频 | 国产成人av片 | 乱色精品无码一区二区国产盗 | 久久国内视频 | 中文字幕免费观看视频 | 欧美另类一区 | 国产福利在线 | 国产有码在线观看 |