C++容器小結
一、容器種類:
1、順序容器是線性結構,順序容器中每個元素的位置與元素的值無關,只與元素新增到容器的次序有關。順序容器有:array(C++11)、vector、list、deque、forward_list(C++11)
2、關聯容器:關聯容器是非線性結構(一般使用樹結構),元素的儲存按照一定的順序儲存。關聯容器有:map、set、multimap、multiset
3、無序關聯容器:unordered_set(C++11)、unordered_map(C++11)、unordered_multiset(C++11)、unordered_multimap(C++11)
3、容器介面卡:容器介面卡本身不是一種新容器,是利用已有的容器建立的按照一定規則的資料結構,例如 stack 用 vector/deque/list 物件建立的先進後出的結構(個人理解)。容器介面卡有:stack、queue、prior_queue
二、容器的操作
三、容器的對比
容器 |
底層資料結構 |
特點 |
備註 |
順序容器 |
array |
陣列 |
固定大小,隨機訪問 |
vector |
陣列 |
動態陣列,隨機訪問 |
|
deque |
首尾快速增加和刪除,支援隨機訪問 |
||
forword_list |
單鏈表 |
支援任何位置的快速插入和刪除 |
|
list |
雙鏈表 |
支援任何位置的快速插入和刪除 |
|
關聯容器 |
set |
紅黑樹 |
鍵唯一,已排序,搜尋、移除、和插入是對數複雜度 |
map |
紅黑樹 |
鍵唯一,儲存有序鍵值對,搜尋、移除、和插入是對數複雜度 |
|
無序關聯容器 |
unordered_set |
雜湊表 |
鍵唯一, 無序,搜尋、插入和移除擁有平均常數時間複雜度 |
unordered_map |
雜湊表 |
鍵唯一,無序,搜尋、插入和移除擁有平均常數時間複雜度 |
|
容器介面卡 |
stack |
list/deque |
先進後出 |
queue |
list/deque |
先進先出 |
|
priority_queue |
vector和堆 |
四、參考資料
1、《C++ primer》