GeekBand之STL第一周筆記

課件內(nèi)容:

part1 C++模板介紹

part2 泛型編程

part3 容器

part4 一些進階問題

C++主要有兩種類型的模板

1.類模板(Class template):使用泛型參數(shù)的類

2.函數(shù)模板(Function template):使用泛型參數(shù)的函數(shù)

模板實例化:顯示和隱式兩種方式

類模板實參可以是某一型別或常量(僅限int或enum)

C++類模板的聲明注意事項:

1.聲明類模板和聲明函數(shù)模板類似

2.關(guān)鍵字class和typename都可以用酱塔,但還是傾向于使用typename

templateclass Stack{......};

template class Stack{......};

3.在類模板內(nèi)部翎苫,T可以像其他型別一樣(比如int,char等)定義成員變量和成員函數(shù)

void Push(const T const& element);

int Pop(T& element);

int Top(T& element) const;

std::vector m_Members;

泛型編程(Generic programming)

1.概觀(OverView):泛型編程作為一種編程思維和想法,它是一種編程方法,不依賴于具體的語言。

2.關(guān)聯(lián)特性(Traits)

3.迭代器(Iterators):迭代器是指針的泛化(generalization of pointers)

3.1迭代器本身是一個對象偏螺,指向另外一個(可以被迭代的)對象。

3.2用來迭代一組對象,即如果迭代器指向一組對象中的某個元素状知,則通過increment以后它就可以指向下一組對象中的一個元素。

迭代器(1)

迭代器是指針的泛化(generalization of pointers)

迭代器本身是一個對象孽查,指向另外一個(可以被迭代的)對象

用來迭代一組對象饥悴,即如果迭代器指向一組對象中的某個元素,則通過increment以后它就可以指向這組對象的下一個元素

在STL中迭代器是容器與算法之間的接口

算法通常以迭代器作為輸入?yún)?shù)

容器只要提供一種方式盲再,可以讓迭代器訪問容器中的元素即可西设。

迭代器(2)

迭代器的基本思想

1)在STL中,迭代器最重要的思想就是分離算法和容器答朋,使之不需要相互依賴

2)迭代器將算法和容器粘合(stick)在一起從而使得一種算法的實現(xiàn)可以運用到多種不同的容器上贷揽,如下面的例子所示,find算法接收一對迭代器梦碗,分別指向容器的開始和終止位置:

templalte

inline _InIt find(_InIt _First,_InIt _Last,const _Ty& _Val){

//find frist matching _Val

for(;_First != _Last;++_First)

if(*_First == _Val)

break;

return (_First);

}


Vector

1.Vector是一個能夠存放任意型別的動態(tài)數(shù)組

2.Vector的數(shù)據(jù)結(jié)構(gòu)和操作于數(shù)組類似禽绪,在內(nèi)存中的表示是一段地址連續(xù)的空間。

3.Vector與數(shù)組的區(qū)別在于洪规,數(shù)組大小往往是定義的時候已經(jīng)指定印屁,而Vector支持動態(tài)空間大小調(diào)整,隨著元素的增加淹冰,Vector內(nèi)部會自動擴充內(nèi)存空間库车。

4.為了使用Vector,必須用include指令包含如下文件,并通過std命名空間去訪問:

#include

int main(){

std::vector v;

}

創(chuàng)建Vector


向Vector中添加元素

判斷Vector是否為空


訪問Vector里面的元素:

vector::at() ?//會進行邊界檢查樱拴,判斷是否越界

vector::operator[] ? //不進行邊界檢查柠衍,性能較好


刪除元素:


Deque是一個能夠存放任意型別的雙向隊列

Deque提供的函數(shù)于Vector類似,新增了兩個函數(shù):

push_front:在頭部插入一個元素

pop_front:在頭部彈出一個元素

Deque采用了于Vector不同內(nèi)存管理方法:大塊分配內(nèi)存

為了使用deque晶乔,必須用include指令包含如下文件珍坊,并通過std命名空間去訪問:

include

int main(){

std::deque dq;

}



List的優(yōu)勢和劣勢


常用的操作方法:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市正罢,隨后出現(xiàn)的幾起案子阵漏,更是在濱河造成了極大的恐慌,老刑警劉巖翻具,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件履怯,死亡現(xiàn)場離奇詭異,居然都是意外死亡裆泳,警方通過查閱死者的電腦和手機叹洲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來工禾,“玉大人运提,你說我怎么就攤上這事蝗柔。” “怎么了民泵?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵癣丧,是天一觀的道長。 經(jīng)常有香客問我栈妆,道長胁编,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任签钩,我火速辦了婚禮掏呼,結(jié)果婚禮上坏快,老公的妹妹穿的比我還像新娘铅檩。我一直安慰自己,他們只是感情好莽鸿,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布昧旨。 她就那樣靜靜地躺著,像睡著了一般祥得。 火紅的嫁衣襯著肌膚如雪兔沃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天级及,我揣著相機與錄音乒疏,去河邊找鬼。 笑死饮焦,一個胖子當著我的面吹牛怕吴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播县踢,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼转绷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了硼啤?” 一聲冷哼從身側(cè)響起议经,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谴返,沒想到半個月后煞肾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嗓袱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年籍救,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片索抓。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡钧忽,死狀恐怖毯炮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耸黑,我是刑警寧澤桃煎,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站大刊,受9級特大地震影響为迈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缺菌,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一葫辐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伴郁,春花似錦耿战、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狐胎,卻和暖如春鸭栖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背握巢。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工晕鹊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暴浦。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓溅话,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肉渴。 傳聞我的和親對象是個殘疾皇子公荧,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容