1. 程式人生 > >C++ 11 STL中常用容器分類和對比

C++ 11 STL中常用容器分類和對比

STL容器分類

1,順序容器 sequence containers
  • array
  • vector
  • deque
  • list
  • forward-list 
2,關聯容器 associative containers(紅黑樹實現)
  • set
  • multiset
  • map
  • multimap
3,無序容器 unordered containers (hash表實現)(非標準,也可以劃分到關聯容器
  • hash_set
  • hash_multiset
  • hash_map
  • hash_multimap

STL容器對比

容器的特性跟背後記憶體的分佈息息相關,從上圖可以很清晰的看出。

1,array、vector、deque的記憶體是連續的,連續的記憶體空間必定是支援隨機訪問的,其餘容器則不具備該特點。其中array為固定長度,vector、deque為變長,vector只能單向擴充,deque可以雙向擴充。

2,list、forward-list為鏈條式結構,這種結構在插入、刪除時只需要區域性調整非常方便。但是遍歷時只能按照鏈條順序依次遍歷,查詢起來並不迅速。

3,set、map背後的實現為紅黑樹,所以對查詢具有先天的優勢,但這種結構插入刪除時會產生聯動效應,所以並不適合做頻發的刪除、插入。其中各自multi版本表示內容可以重複。

另外發現有些網友的總結也很好,大家可以都看看便於理解:

  1. https://blog.csdn.net/gcs6564157/article/details/65443202
  2. https://blog.csdn.net/qq_14898543/article/details/51381642