map是關聯式的,vector、list、deque是序列式的。
map:底層機制RB-tree(紅黑樹),元素自動排序,鍵值對。
vector:操作方式與array相似,動態空間增長。是連續性空間,支持隨機訪問。
優點:
? 內存動態增長,不需要指定內存大小。
? 支持隨機訪問,即支持[]和vector.at()。
缺點:
? 在內部進行插入刪除操作效率低。
? 只能在vector的最後進行push和pop。
list:對空間的運用有絕對的精准,一點也不浪費。刪除插入簡單,但不支持隨機訪問。雙向線性列表。
優點:
? 方便插入和刪除。
? 可在兩端push、pop。
缺點:不能隨機訪問。
deque:雙向開口的連續性空間。頭尾兩端分別做元素的插入和刪除。
優點:
? 隨機訪問。
? 方便插入和刪除。
? 可在兩端push、pop。
缺點:內部實現復雜,效率較低。排序等不適用。
使用場合總結:
? 需要高效的存取,不在於插入和刪除效率,使用vector。
? 需要大量插入和刪除,不關心存取,使用list。
? 關心存取,且兩端數據進行插入和刪除,使用deque。
? 鍵值對,一對一映射,采用map。