STL總結(jié)-容器

C++標(biāo)準(zhǔn)庫(kù)(STL)中的容器

1. 序列容器

容器里的元素是有位置的,有前有后

1.1. array

靜態(tài)連續(xù)數(shù)組.
C++11中新增.
大小是固定的,不能改變.
和C語(yǔ)言中本來(lái)支持的數(shù)組[]特性類(lèi)似;
支持隨機(jī)存取, 支持容器都支持的迭代器操作,支持判斷數(shù)組中元素的數(shù)量等操作;

1.2. vector

動(dòng)態(tài)連續(xù)數(shù)組.
大小可變
使用的內(nèi)存是連續(xù)的.
所以支持隨機(jī)存取
在末端的增刪操作性能好,但是中間的插入刪除性能差.

1.3 deque

雙頭隊(duì)列;
可在頭部和尾部插入刪除;
使用的內(nèi)存是不連續(xù)的, 但是一段一段的;
隨機(jī)存取時(shí)間復(fù)雜度為o(1);
頭尾插入刪除基本也是o(1);
插入刪除任意元素是o(n);

1.4 forward_list

單向鏈表;
c++11中新增;
不支持隨機(jī)存取;
列表里增加,刪除,移動(dòng)一個(gè)元素, 不會(huì)使得指向其他元素的迭代器失效, 只會(huì)使自己失效;

1.5 list

雙向鏈表
插入刪除元素常量時(shí)間;
增加, 刪除, 移動(dòng)元素, 不會(huì)使得其他元素的迭代器失效;

2. 關(guān)聯(lián)容器

關(guān)聯(lián)容器里的值,都按照某種規(guī)則(元素值的大小)進(jìn)行了排序;

2.1 set

集合
包含的都是關(guān)鍵字, 每個(gè)都是唯一的;
搜索, 刪除 , 插入的時(shí)間復(fù)雜度是o(log(n))

2.2 map

映射
包含的元素都是關(guān)鍵字-值, 按照關(guān)鍵字進(jìn)行了排序
搜索, 刪除, 插入的時(shí)間復(fù)雜度是o(log(n))
常用紅黑樹(shù)實(shí)現(xiàn);

2.3 multiset

可重復(fù)集合;
可以有等值的元素存在;
c++11中新增;
等值的元素, 按照插入順序;

2.4 multimap

可重復(fù)映射
包含的元素中, 允許關(guān)鍵字相等
c++11中新增;
關(guān)鍵字等值的元素, 按照插入順序;

3. 無(wú)序關(guān)聯(lián)容器

容器中的值, 不進(jìn)行排序;
都是c++11中新增

3.1 unordered_set

無(wú)序集合;
等值的元素唯一;
搜索, 插入, 刪除的時(shí)間復(fù)雜度為常量;

3.2 unordered_map

無(wú)序映射;
關(guān)鍵字等值的元素唯一;
搜索, 插入, 刪除的時(shí)間復(fù)雜度為常量;

3.3 unordered_multiset

無(wú)序的可重復(fù)集合
可以容納等值的元素
元素不排序
搜索,插入,刪除的時(shí)間復(fù)雜度為常量

3.4 unordered_multimap

無(wú)序可重復(fù)映射
可以容納關(guān)鍵字等值的元素;
不排序;
搜索, 插入, 刪除的時(shí)間復(fù)雜度為常量;

4. 容器適配器

為序列容器提供了不一樣的接口

4.1 stack

LIFO棧

4.2 queue

FIFO隊(duì)列

4.3 priority_queue

 隊(duì)列的第一個(gè)元素總是最大的那個(gè)

5. 容器的線(xiàn)程安全性

總體來(lái)說(shuō), 容器的線(xiàn)程安全是不靠譜的, 專(zhuān)家們說(shuō), 別靠容器自己來(lái)保證線(xiàn)程安全.
  • 對(duì)于不同的線(xiàn)程,可以同時(shí)用任何函數(shù)(不是成員函數(shù)哦)訪問(wèn)不同的容器(似乎有些廢話(huà));
  • 對(duì)于不同的線(xiàn)程,可以同時(shí)訪問(wèn)相同容器的只讀成員函數(shù);
  • 不同的線(xiàn)程, 可以同時(shí)修改同一容器中的不同元素, 除了vector<bool>
  • 也許... 沒(méi)啥意義
  • Elements of the same container can be modified concurrently with those member functions that are not specified to access these elements. More generally, the C++ standard library functions do not read objects indirectly accessible through their arguments (including other elements of a container) except when required by its specification.
  • In any case, container operations (as well as algorithms, or any other C++ standard library functions) may be parallelized internally as long as this does not change the user-visible results (e.g. std::transform may be parallelized, but not std::for_each which is specified to visit each element of a sequence in order)

6 容器成員函數(shù)的分類(lèi)

6.1 構(gòu)造類(lèi)函數(shù)

構(gòu)造函數(shù)
析構(gòu)函數(shù)
賦值運(yùn)算符
assign方法

6.2 迭代器函數(shù)

頭 begin
尾 end
常量頭 cbegin
常量尾 cend
逆頭 rbegin
常量逆頭 crbegin
逆尾 rend
常量逆尾 crend

6.3 訪問(wèn)元素

at
[]
front() 第一個(gè)
back() 最后一個(gè)

6.4 容量

判斷空 empty
元素?cái)?shù)量 size
容器最大允許的元素?cái)?shù)量 max_size
重設(shè)元素?cái)?shù)量 resize
capacity 已經(jīng)分配的內(nèi)存
調(diào)整內(nèi)存 reverse
讓容量匹配元素?cái)?shù)量 shrink_to_fit

6.5 修改

清空 clear
插入 insert
直接在某位置構(gòu)造并插入 emplace
直接在某位置構(gòu)造并插入, 而且別自動(dòng)排序 emplace_hint
刪除迭代器指定的元素 erase
在最前壓入 push_front
直接構(gòu)造并在最前壓入 emplace_front
從前面彈出 pop_front
從后面壓入 push_back
直接構(gòu)造并在最后壓入 emplace_back
從后面彈出 pop_back
交換兩個(gè)容器的內(nèi)容 swap

6.7 列表操作

合并 merge
切割 splice
移除元素 remove
移除符合條件的元素 remove_if
反序 reverse
清除重復(fù)元素 unique
按照增序排序 sort

6.8 查找

等值計(jì)數(shù) count
查找 find
查找比某個(gè)元素大的第一個(gè)元素位置 lower_bound
查找比某個(gè)元素小的第一個(gè)元素的位置 upper_bound
找到等值序列 equal_range

6.9 觀察者

得到鍵比較函數(shù)
得到值比較函數(shù)
得到哈希函數(shù)
得到鍵相等函數(shù)

6.10分配器

得到元素的分配器

最終是一張大表:

Bitmap 2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市思劳,隨后出現(xiàn)的幾起案子丢习,更是在濱河造成了極大的恐慌嫁审,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異歇盼,居然都是意外死亡攘烛,警方通過(guò)查閱死者的電腦和手機(jī)魏滚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坟漱,“玉大人栏赴,你說(shuō)我怎么就攤上這事【钢龋” “怎么了须眷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沟突。 經(jīng)常有香客問(wèn)我花颗,道長(zhǎng),這世上最難降的妖魔是什么惠拭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任扩劝,我火速辦了婚禮庸论,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棒呛。我一直安慰自己聂示,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布簇秒。 她就那樣靜靜地躺著鱼喉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趋观。 梳的紋絲不亂的頭發(fā)上扛禽,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音皱坛,去河邊找鬼编曼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剩辟,可吹牛的內(nèi)容都是我干的掐场。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贩猎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刻肄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起融欧,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤敏弃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后噪馏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體麦到,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年欠肾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓶颠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刺桃,死狀恐怖粹淋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瑟慈,我是刑警寧澤桃移,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站葛碧,受9級(jí)特大地震影響借杰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜进泼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一蔗衡、第九天 我趴在偏房一處隱蔽的房頂上張望纤虽。 院中可真熱鬧,春花似錦绞惦、人聲如沸逼纸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)杰刽。三九已至,卻和暖如春堆生,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雷酪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工淑仆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥力。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓蔗怠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吩跋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寞射,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法锌钮,內(nèi)部類(lèi)的語(yǔ)法桥温,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法梁丘,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,632評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評(píng)論 25 707
  • 從三月份找實(shí)習(xí)到現(xiàn)在侵浸,面了一些公司,掛了不少氛谜,但最終還是拿到小米掏觉、百度、阿里值漫、京東澳腹、新浪、CVTE杨何、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,248評(píng)論 11 349
  • 試著做些改變酱塔, 試著丟棄些小情緒。 當(dāng)初有些事危虱, 讓你刻骨銘心延旧; 曾經(jīng)有些人, 令你難以釋?xiě)选?一路走來(lái)槽地, 告別一...
    guohong閱讀 674評(píng)論 0 2
  • 讀Hal Elrod 的《THE MIRACLE MORNING》,簡(jiǎn)單五步集畅,做晨型人近弟。 很具體很簡(jiǎn)潔的方法,可執(zhí)...
    醬油不打醬油閱讀 395評(píng)論 0 1