1. 程式人生 > >C++容器小結

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》