日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲永久无码7777kkk | 中文字幕免费在线看线人动作大片 | 色爱亚洲 | 尤物视频在线观看视频 | 婷婷色婷婷开心五月四房播播 | 日韩精品视频在线观看网站 | 亚洲一区二区精品 | 在线激情视频 | 91色交视频 | 日本午夜啪啪 | 成人小视频在线免费观看 | 午夜视频在线网站 | 国产男女无套免费网站 | 国产亚洲精品久久久久久打不开 | www.香蕉.com | 婷婷六月综合 | www.18av| 97射射| 一级免费大片 | 成人v片 | 国产喷白浆一区二区三区 | 欧美激情性生活 | 自拍偷拍20p | 国产第一av | 在线尤物 | 久久久精品一区 | 玩偶游戏在线观看免费 | 午夜剧场黄色 | 亚洲精品男人天堂 | 色综合天| 中文字幕在线观看三区 | 亚洲射| a点w片| 三上悠亚亚洲一区 | 日日夜夜精品免费 | 娇小tube性极品娇小 | 2021狠狠操 | 一级全黄男女免费大片 | av中文资源 | 日本老年老熟无码 | 波多野结衣一二三四区 | 中字幕视频在线永久在线观看免费 | 天天操天天插天天射 | 国产又粗又黄又爽视频 | www黄色网址 | 中国美女乱淫免费看视频 | 手机在线观看av网站 | 国产精品成人久久电影 | 国产高清中文字幕 | 欧美成人黑人猛交 | 夜夜草网站 | 先锋资源中文字幕 | 欧美亚洲综合另类 | 狠狠爱夜夜爱 | 四虎综合网 | 91精品国产91久久久久久久久久久久 | 日韩精品一二三区 | 波多野结衣一区二区三区四区 | 殴美一级黄色片 | 欧美韩日国产 | 手机在线看片你懂的 | a视频免费在线观看 | 神马久久久久久 | h成人在线 | 经典av在线 | 波多野结衣在线观看一区二区三区 | 香蕉色综合 | 一级黄色在线 | 无码人妻精品一区二区三区不卡 | 射一射| 成av人片一区二区三区久久 | 久久中文字幕电影 | 欧美zozo| 日韩视频一区二区在线观看 | 男人天堂亚洲天堂 | 亚洲无吗在线观看 | 国产精品swag | 精品动漫一区二区三区 | 欧美一区二区最爽乱淫视频免费看 | 日韩欧美网 | 蜜桃av在线免费观看 | wwwxxx欧美| 国产免费不卡 | 操网| 免费无码一区二区三区 | 欧美一级在线免费 | 综合网色 | 三级网站国产 | 色老久久 | 真实乱视频国产免费观看 | 黄色a级片在线观看 | 一级黄色网 | 波多野结衣电影免费观看 | 亚洲一区久久久 | 日韩小视频网站 | 国产一精品一aⅴ一免费 | 狠狠干夜夜草 | 亚洲精品久久久久久久久久久 | 日韩在线一级 |