cpp stl 容器對比

2021-10-01 10:20:28 字數 1161 閱讀 5580

包含13個模板類

、、、、、、、

、、、、和關聯式容器:容器內的元素按照一定的規則放到適當的位置,插入元素時不能指定位置

序列式容器:元素在容器中的位置與元素值無關,插入元素時可以指定在容器中插入的位置

容器介面卡:不支援任意一種迭代器

set(集合)–關聯式容器
由節點組成的紅黑樹(元素有序且唯一)  

集合:鍵是唯一的,值的型別必須與鍵相同

特點:查詢的速度特別快(時間複雜度logn)

multiset(多重集合)–關聯式容器
允許有重複的元素  

多重集合:可以有多個相同的鍵

特點:和set一樣查詢速度快(時間複雜度logn)

map(對映)–關聯式容器
由鍵值對組成的集合(元素按照key雜湊組成紅黑樹) 

對映:鍵不允許重複

特點:查詢的時間複雜度(logn)

multimap(多重對映)–關聯式容器
和map一樣,區別是可以有相同的鍵
list(列表)–序列式容器
雙向鍊錶(記憶體不連續)  

列表:可以在任意位置插入,刪除

特點:時間複雜度為(n)

vector(向量)–序列式容器
可變大小陣列(元素儲存在一段連續的記憶體)  

向量:唯一可以和標準c相容的stl容器

特點:可以隨機訪問,時間複雜度(n)

dqueue(雙向佇列)–序列式容器
記憶體連續,可以隨機訪問元素

雙向佇列:在序列頭部插入,刪除時間複雜度(n)

stack(棧)–容器介面卡
stack:是用vector/deque/list物件建立了乙個先進後出容器
queue(佇列)–容器介面卡
queue:是用deque或list物件建立了乙個先進先出容器

動態的分段連續空間組合而成,可以方便的擴充大小

操作:僅允許隊尾和隊首的操作

priority_queue(優先佇列)–容器介面卡
priority_queue:是用vector/deque建立了乙個排序佇列,內部用二叉堆實現

集合容器對比

vector和list vector 在記憶體中是連續儲存的,對於隨機訪問的效率較高 對於插入和刪除,由於需要複製元素,開銷較大 list在記憶體中是離散儲存的,對於隨機訪問需要遍歷,效率較低而對於插入刪除效率較高 list執行緒不安全,vector是執行緒安全的 arraylist和linkedl...

C 容器對比

型別 vector list deque maphash map set簡介 vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說vector是乙個能夠存放任意...

STL常用容器對比

stl的常用容器大致有以下8個 vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造乙個初始長度為0的記憶體空間,且分配的記憶體空間是以2的倍數動態增長的,在push...