STL基礎4:STL7個常用容器的比較

 

STL基礎4:STL7個常用容器的比較


1.STL容器分類:

STL的容器可以分爲以下幾個大類: 
一 順序(序列)容器, 有vector, list, deque, string,stack( 適配器類), queue( 適配器類), priority queues( 適配器類)

二   關聯容器,     有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimap

 

2.容器比較

  vector deque list set multiset map multimap
名稱 向量容器 雙向隊列容器 列表容器 集合 多重集合 映射 多重映射

內部數

據結構

連續存儲的數組形式(一端開口的組)

連續或分段連續存儲數組(兩端

開口的數組)

雙向環狀鏈表 紅黑樹(平衡檢索二叉樹) 紅黑樹 紅黑樹 紅黑樹

 

             
頭文件 #include <vector> #include <deque> #include <list> #include <set> #include <set> #include <map> #include <map>
操作元素的方式 下標運算符:[0](可以用迭代器,但插入刪除操作時會失效)

下標運算符或迭代器

只能用迭代器(不斷用變量值來遞推新值,相當於指針),不支持使用下標運算符

迭代器 迭代器 迭代器 迭代器
插入刪除操作迭代器是否失效 插入和刪除元素都會使迭代器失效 插入任何元素都會使迭代器失效。刪除頭和尾元素,指向被刪除節點迭代器失效,而刪除中間元素會使所有迭代器失效 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效

3.各容器特點比較以及選擇

  vector deque list set multiset map multimap
名稱 向量容器 雙向隊列容器 列表容器 集合 多重集合 映射 多重映射

特點

增加和獲取元素效率

很高,插入和刪除的

效率很低

 

增加和獲取元素效率

較高,插入和刪除的

效率較高

 

增加和獲取元素效率

很低,插入和刪除的

效率很高

1.鍵(關鍵字)和值(數據)相等(就是模版只有一個參數,鍵和值合起來)

2.鍵唯一

3.元素默認按升序排列

1.鍵和值相等

2.鍵可以不唯一

3.元素默認按升序排列

1.鍵和值分開(模版有兩個參數,前面是鍵後面是值)

2.鍵唯一

3.元素默認按鍵的升序排列

1.鍵和值分開

2.鍵可以不唯一

3.元素默認按鍵的升序排列

定義容器

vector<string> book(50); deque<string> book(50); list<string> book; set<string> book; multiset<string> book; map<int,string> book; multimap<int,string> book;
               

 

4.各容器的圖表說明

   4.1 vector

  4.2 deque

  4.3 list

  4.4 map/multimap

  4.5 set/multiset


轉載自:http://blog.csdn.net/longhuahaha/article/details/8365041
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章