C++ STL與泛型編程-第一篇

C++ STL與泛型編程-第一篇

本章內(nèi)容:
1 C++ Standard Library vs. Standard Template Library
2 C++的幾個重要網(wǎng)頁
3 STL相關(guān)基礎(chǔ)知識
3.1 STL六大部件
3.2 STL六大部件關(guān)系
3.3 容器-結(jié)構(gòu)與分類
4 容器使用示例
5 分配器使用示例


1 C++ Standard Library vs. Standard Template Library

  • C++ Standard Library -- C++標(biāo)準(zhǔn)庫
  • Standard Template Library -- STL,標(biāo)準(zhǔn)模板庫
    標(biāo)準(zhǔn)庫以header files形式呈現(xiàn):
  • C++標(biāo)準(zhǔn)庫的header files不帶后綴名(.h),例如#include <vector>
  • 新式C header files不帶后綴名.h谎仲,例如#include <cstdio>
  • 舊式C header files(帶后綴名.h)仍然可用,例如#include <stdio.h>
  • 新式headers內(nèi)的組件封裝于namespace std嘱能,用法如下:
    1). using namespace std;
    2). using std::cout;
  • 舊式headers內(nèi)的組件不封裝于namespace std
    頭文件使用示例:
    #include <string>
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <functional>
    using namespace std;

2 C++的幾個重要網(wǎng)頁

1). www.cplusplus.com
2). en.cppreference.com
3). gcc.gnu.org

3 STL相關(guān)基礎(chǔ)知識

3.1 STL六大部件

  • 容器(Containers)
  • 分配器(Allocators)
  • 算法(Algorithms)
  • 迭代器(Interators)
  • 適配器(Adapters)
  • 仿函數(shù)(Functors)

3.2 STL六大部件關(guān)系

  • 六大部件之間的關(guān)系如下圖所示:


    六大部件關(guān)系圖
  • 六大部件代碼調(diào)用示例:


    代碼調(diào)用示例

3.3 容器-結(jié)構(gòu)與分類

  • STL中容器結(jié)構(gòu)分成如下幾種:


    結(jié)構(gòu)分類

4 容器使用示例

  • 公共函數(shù)部分如下所示:


    公共函數(shù)

4.1 使用容器array

array容器結(jié)構(gòu)
  • array容器的相關(guān)測試代碼和結(jié)果如下:


    array測試代碼和結(jié)果

4.2 使用容器vector

vector容器結(jié)構(gòu)
  • vector容器的相關(guān)測試代碼和結(jié)果如下:


    vector測試代碼

    vector測試代碼和結(jié)果

4.3 使用容器list

list容器結(jié)構(gòu)
  • list容器的相關(guān)測試代碼和結(jié)果如下:


    list測試代碼和結(jié)果

4.4 使用容器forward_list

forward_list結(jié)構(gòu)
  • forward_list容器的相關(guān)測試代碼和結(jié)果如下:


    forward_list測試代碼和結(jié)果

4.5 使用容器deque

deque結(jié)構(gòu)
  • 容器deque的內(nèi)存結(jié)構(gòu)如下圖所示:


    deque內(nèi)存結(jié)構(gòu)
  • deque容器的相關(guān)測試代碼和結(jié)果如下:


    deque測試代碼和結(jié)果

4.6 使用容器stack

stack結(jié)構(gòu)
  • stack容器的相關(guān)測試代碼和結(jié)果如下:


    stack測試代碼和結(jié)果

4.7 使用容器queue

queue結(jié)構(gòu)
  • queue容器的相關(guān)測試代碼和結(jié)果如下:


    queue測試代碼和結(jié)果

4.8 使用容器multiset

multiset結(jié)構(gòu)
  • multiset容器的相關(guān)測試代碼和結(jié)果如下:


    multiset測試代碼和結(jié)果

4.9 使用容器multimap

multimap結(jié)構(gòu)
  • multimap容器的相關(guān)測試代碼和結(jié)果如下:


    multimap測試代碼和結(jié)果

4.10 使用容器unordered_multiset

unordered_multiset結(jié)構(gòu)

4.11 使用容器unordered_multimap

unordered_multimap結(jié)構(gòu)
  • unordered_multimap容器的相關(guān)測試代碼和結(jié)果如下:


    unordered_multimap測試代碼和結(jié)果

4.12 使用容器set

set結(jié)構(gòu)
  • set容器的相關(guān)測試代碼和結(jié)果如下:


    set測試代碼和結(jié)果

4.13 使用容器map

map結(jié)構(gòu)
  • map容器的相關(guān)測試代碼和結(jié)果如下:


    map測試代碼和結(jié)果

5 分配器使用示例

  • 分配器的使用如下圖所示:


    allocator
  • STL分配器allocator有如下幾種:

    1. array_allocator
    2. mt_allocator
    3. debug_allocator
    4. pool_allocator
    5. bitmap_allocator
    6. malloc_allocator
    7. new_allocator
  • 分配器的結(jié)構(gòu)和使用示例如下圖所示:


    分配器的結(jié)構(gòu)和使用
  • 分配器的測試代碼如下圖所示:


    分配器的測試代碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尽楔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子玛歌,更是在濱河造成了極大的恐慌灯帮,老刑警劉巖崖技,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異施流,居然都是意外死亡响疚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門瞪醋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忿晕,“玉大人,你說我怎么就攤上這事银受〖危” “怎么了?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵宾巍,是天一觀的道長咕幻。 經(jīng)常有香客問我,道長顶霞,這世上最難降的妖魔是什么肄程? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮选浑,結(jié)果婚禮上蓝厌,老公的妹妹穿的比我還像新娘。我一直安慰自己古徒,他們只是感情好拓提,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隧膘,像睡著了一般代态。 火紅的嫁衣襯著肌膚如雪寺惫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天蹦疑,我揣著相機(jī)與錄音西雀,去河邊找鬼。 笑死必尼,一個胖子當(dāng)著我的面吹牛蒋搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播判莉,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼育谬!你這毒婦竟也來了券盅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤膛檀,失蹤者是張志新(化名)和其女友劉穎锰镀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咖刃,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泳炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嚎杨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片花鹅。...
    茶點(diǎn)故事閱讀 38,712評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枫浙,靈堂內(nèi)的尸體忽然破棺而出刨肃,到底是詐尸還是另有隱情,我是刑警寧澤箩帚,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布真友,位于F島的核電站,受9級特大地震影響紧帕,放射性物質(zhì)發(fā)生泄漏盔然。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一是嗜、第九天 我趴在偏房一處隱蔽的房頂上張望愈案。 院中可真熱鬧,春花似錦叠纷、人聲如沸刻帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崇众。三九已至掂僵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顷歌,已是汗流浹背锰蓬。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眯漩,地道東北人擎值。 一個月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像遍略,于是被迫代替她去往敵國和親宦赠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評論 2 350

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