C STL裡面7個常用容器的比較

2021-07-29 10:00:07 字數 2255 閱讀 7850

1.stl容器分類:

stl的容器可以分為以下幾個大類: 

一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類)

二   關聯容器,     有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimap

2.容器比較

vector

deque

list

setmultiset

mapmultimap

名稱向量容器

雙向佇列容器

列表容器

集合多重集合

對映多重對映

內部資料結構

連續儲存的陣列形式(一端開口的組)

連續或分段連續儲存陣列(兩端

開口的陣列)

雙向環狀鍊錶

紅黑樹(平衡檢索二叉樹)

紅黑樹紅黑樹

紅黑樹標頭檔案

#include

#include

#include

#include

#include

#include

#include

操作元素的方式

下標運算子:[0](可以用迭代器,但插入刪除操作時會失效)

下標運算子或迭代器

只能用迭代器(不斷用變數值來遞推新值,相當於指標),不支援使用下標運算子

迭代器迭代器

迭代器迭代器

插入刪除操作迭代器是否失效

插入和刪除元素都會使迭代器失效

插入任何元素都會使迭代器失效。刪除頭和尾元素,指向被刪除節點迭代器失效,而刪除中間元素會使所有迭代器失效

插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

3.各容器特點比較以及選擇

vector

deque

list

setmultiset

mapmultimap

名稱向量容器

雙向佇列容器

列表容器

集合多重集合

對映多重對映

特點增加和獲取元素效率

很高,插入和刪除的

效率很低

增加和獲取元素效率

較高,插入和刪除的

效率較高

增加和獲取元素效率

很低,插入和刪除的

效率很高

1.鍵(關鍵字)和值(資料)相等(就是模版只有乙個引數,鍵和值合起來)

2.鍵唯一

3.元素預設按公升序排列

1.鍵和值相等

2.鍵可以不唯一

3.元素預設按公升序排列

1.鍵和值分開(模版有兩個引數,前面是鍵後面是值)

2.鍵唯一

3.元素預設按鍵的公升序排列

1.鍵和值分開

2.鍵可以不唯一

3.元素預設按鍵的公升序排列

定義容器

vectorbook(50);

dequebook(50);

listbook;

setbook;

multisetbook;

mapbook;

multimapbook;

4.各容器的圖表說明

深入解析C STL中的常用容器

這裡我們不涉及容器的基本操作之類,只是要討論一下各個容器其各自的特點。stl中的常用容器包括 順序性容器 vector deque list 關聯容器 map set 容器介面卡 queue stac stl是c c 開發中乙個非常重要的模板,而其中定義的各種容器也是非常方便我們大家使用。下面,我們...

深入解析C STL中的常用容器

這裡我們不涉及容器的基本操作之類,只是要討論一下各個容器其各自的特點。stl中的常用容器包括 順序性容器 vector deque list 關聯容器 map set 容器介面卡 queue stac stl是c c 開發中乙個非常重要的模板,而其中定義的各種容器也是非常方便我們大家使用。下面,我們...

深入解析C STL中的常用容器

這裡我們不涉及容器的基本操作之類,只是要討論一下各個容器其各自的特點。stl中的常用容器包括 順序性容器 vector deque list 關聯容器 map set 容器介面卡 queue stac stl是c c 開發中乙個非常重要的模板,而其中定義的各種容器也是非常方便我們大家使用。下面,我們...