STL與泛型編程(geekband)

1.定義模板

1.1函數(shù)模板
template<模板參數(shù)列表>
返回值 函數(shù)名(形參列表)

實(shí)例化函數(shù)模板
通過形參列表來推導(dǎo)出模板參數(shù)的實(shí)參蝶缀。

模板類型參數(shù)
A類型模板參數(shù)
template<typename T>
typename T 為模板類型參數(shù)
B非類型模板參數(shù)
template<類型 a>
類型有所限定,如果是非引用或指針是整型椒惨, 有引用或指針必須有靜態(tài)生存期。

編寫類型無關(guān)的代碼
為了達(dá)到泛型編程的目的潮罪,適用范圍廣康谆,有兩個(gè)原則
!模板中的函數(shù)參數(shù)是const的引用
! 函數(shù)題中的條件判斷僅使用<比較運(yùn)算
模板應(yīng)盡量減少對(duì)實(shí)參的要求

模板的編譯
模板是在編譯期間實(shí)例化错洁,第一步先檢查語法秉宿,第二步實(shí)例化

1.2 類模板
類模板的定義
template<typename T>
class 類名
{
...
};

實(shí)例化類模板
類模板必須通過顯示模板參數(shù)來實(shí)例化戒突,并且每一個(gè)實(shí)例直接互相不關(guān)聯(lián)屯碴。

類模板成員函數(shù)的實(shí)例化
定義前面要加上template<typename T>

在類代碼內(nèi)簡(jiǎn)化模板類名的使用
如果在類內(nèi)可以不使用要有模板的類名
template<typename T>
class A{
A();//也可以A<T>();
A& operator ++();
}膊存;

在類模板外使用類模板名
與上面相對(duì)應(yīng)导而,如果A()在模板外定義
template<typename T>
A<T>& A<T>::operator++(){}
其中有了A<T>::的類作用域聲明或在函數(shù)中可以上在類內(nèi)一樣不用在類后加上類型。

類模板和友元
一對(duì)一的友元
template <tynename> class BlobPtr;

template<typename T>
class{
friend class BlaobPtr<T>;
}
兩個(gè)類型參數(shù)相同

通用和特定的模板友好關(guān)系
template<typename T>class Pal;
class C{
friend class Pal<X>;//所有的Pal都是友元隔崎,并且不用前項(xiàng)聲明今艺。
}

令模板自己的類型參數(shù)成為友元
template<typename Type> class Bar{
friend Type;//用那個(gè)實(shí)例化,那個(gè)將成為他的友元 爵卒,內(nèi)置類型也可以虚缎。
};

類模板的static成員
每個(gè)實(shí)例有一個(gè)靜態(tài)成員,通過類名 或 對(duì)象訪問钓株。

默認(rèn)模板實(shí)參
和函數(shù)的默認(rèn)相似

控制實(shí)例化
extern template declaration;//聲明 在有定義的cpp文件生成模板實(shí)例
template declaration;//定義在該cpp生成模板实牡。
這種實(shí)例化模板聲明會(huì)實(shí)例(定義)所有的成員,所以必須保證所以類型都可以以應(yīng)用于成員函數(shù)轴合。 (普通的類模板實(shí)例是部分實(shí)例创坞,用那個(gè)成員實(shí)例化哪個(gè))

1.3模板的實(shí)參推斷
類型轉(zhuǎn)換與模板類型參數(shù)
支持轉(zhuǎn)換類型
!const轉(zhuǎn)換 非const的引用或指針可以向const轉(zhuǎn)換
受葛! 數(shù)組向指針轉(zhuǎn)換 (函數(shù)參數(shù)不是引用類型)
其他類型都不可以比如 double向int轉(zhuǎn)換

函數(shù)模板的顯示實(shí)參
類似與類的實(shí)例化 函數(shù)名<顯示模板參數(shù)類型>
這種支持一般的轉(zhuǎn)換

尾置返回類型與類型轉(zhuǎn)換

模板的特化
template<>
class stack<string>{

};
對(duì)于某種不可以轉(zhuǎn)換的類型可以將其特化為可以轉(zhuǎn)換的類型
還可以添加功能(成員)
模板的特例本質(zhì)是模板的實(shí)例化與函數(shù)的重載不同题涨。

模板的偏(部分)特化
類模板可以偎谁,函數(shù)模板不能,
template<typename T>
class stack<T&>{
};

泛型編程
關(guān)聯(lián)特性

Paste_Image.png

是把一種類型提示為更大內(nèi)存的類型 纲堵,讓程序的運(yùn)行更加的同用巡雨。

迭代器

Iterators(迭代器)是算法和容器的橋梁。將迭代器作為算法的參數(shù)席函、通過迭代器來訪問容器而不是把容器直接作為算法的參數(shù)鸯隅。迭代器事故STL中的樞紐。

向挖。

容器
vector
deque
list
stack
queue
map和Multimup
set和multiset
使用查表即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝌以,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子何之,更是在濱河造成了極大的恐慌跟畅,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溶推,死亡現(xiàn)場(chǎng)離奇詭異徊件,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蒜危,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門虱痕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辐赞,你說我怎么就攤上這事部翘。” “怎么了响委?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵新思,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我赘风,道長(zhǎng)夹囚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任邀窃,我火速辦了婚禮荸哟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞬捕。我一直安慰自己鞍历,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布山析。 她就那樣靜靜地躺著堰燎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笋轨。 梳的紋絲不亂的頭發(fā)上秆剪,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天赊淑,我揣著相機(jī)與錄音,去河邊找鬼仅讽。 笑死陶缺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洁灵。 我是一名探鬼主播饱岸,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼徽千!你這毒婦竟也來了苫费?” 一聲冷哼從身側(cè)響起染厅,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤布蔗,失蹤者是張志新(化名)和其女友劉穎先蒋,沒想到半個(gè)月后仓蛆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唇聘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年懈词,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了童叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慎菲。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫁蛇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出露该,到底是詐尸還是另有隱情睬棚,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布有决,位于F島的核電站闸拿,受9級(jí)特大地震影響空盼,放射性物質(zhì)發(fā)生泄漏书幕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一揽趾、第九天 我趴在偏房一處隱蔽的房頂上張望台汇。 院中可真熱鬧,春花似錦篱瞎、人聲如沸苟呐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牵素。三九已至,卻和暖如春澄者,著一層夾襖步出監(jiān)牢的瞬間笆呆,已是汗流浹背请琳。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赠幕,地道東北人俄精。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像榕堰,于是被迫代替她去往敵國(guó)和親竖慧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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