一、容器種類:
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》
2、
C 順序容器小結
c primer 中文第四版中,第九章 容器和演算法 標準庫定義了順序容器和關聯容器。順序容器 sequential container 將單一型別元素聚集起來成為容器,然後根據位置來儲存和訪問這些元素。順序容器的元素排列次序與元素值無關,而是由元素新增到容器裡的次序決定。標準庫定義了三種順序容器型...
C 順序容器學習小結
一 c 陣列的描述 一維陣列的動態記憶體分配 int num new int len delete num 二維陣列的動態記憶體分配 1 知第二維 char num n 指向陣列的指標 num newchar m n deletenum 2 知第一維 char num m 指標的陣列 for int...
C vector容器小結
通俗的說,vector是乙個可以存放任意型別資料的動態陣列 容器中的元素嚴格按照線性順序排序,可以通過元素在序列中的位置訪問對應的元素。提供了在序列末尾快速新增 刪除元素的操作。動態分配記憶體。vector 建立乙個空vector push back x 在向量尾部新增乙個元素x pop back ...