關聯容器的查詢和插入都很快,類似於資料庫,通過key來查詢value;底層通過紅黑樹和hast table來支援。
一、紅黑樹
1、按照key來排序
二、set/multiset
1、key即value,所以不允許修改值
2、將迭代器設定為const,來阻止修改其值;
3、set的操作,都交給了紅黑樹來完成,更像是容器的介面卡(如同stack,queue,操作都交給deque);
三、map/multimap
1、插入即排序,不可以改變key,可以改變value
2、將key和value包成pair,並將key設定為const,從而阻止修改;
四、hashtable
1、關聯容器的另乙個分支。每個bucket下有乙個鍊錶,當元素個數大於bucket數時(可能會使鍊錶過長,不利於查詢),重新分配bucket:
一般二倍附近原bucket數(最接近的素數)。
2、有的hashtable需要自己設計hash function,參考如下的特化版本
五、 unordered容器
底層為hash table
容器 順序容器 關聯容器
容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...
STL學習 四 關聯容器
一 簡介 二 操作 排序順序 預設為從小到大 加上仿函式greater之後為從大到小 2.插入只提供insert函式 3.屬性 size 沒有capacity 因為本質和鍊錶類似 迭代器也只能 操作 4.刪除 earse 和clear 5.查詢 可以重複的set集合,其他和set類似 一 簡介 鍵值...
map容器即關聯容器
include string include map using namespace std intmain 資料 1.對映和多重對映以容器以鍵 值對 pair物件 的形式管理他們的元素,其元素按照 某種標準對鍵進行排列,預設標準為 排序時比較pair物件的資料成員first的值.相等則比較seco...