stl中有很多的容器比如說序列是容器和關聯式容器,經常見到的容器有這些:vector,list,deque,forward_lise等,這幾個容器通常稱為序列式容器,因為其底層為線性序列的資料結構,裡面儲存的是元素本身。
什麼是關聯是容器?
關聯式容器也是用來儲存資料的,與序列式容器不同的是,其裡面儲存的是結構的鍵值對,在資料檢索的時候比序列式容器效率更高。
鍵值對:用來表示具有一一對應關係的一種結構,該結構中一般只包含兩個成員變數key和value,key代表鍵值,value代表與之相對應的資訊。
樹形結構關聯式容器主要有四種:map,set,multimap,multiset,但常用的只有map,和set兩種。
其共同點是:使用平衡搜尋樹(即紅黑樹)作為其底層結構,容器中的元素是乙個有序的序列。
map的簡介:
1. map是關聯容器,它按照特定的次序(按照key來比較)儲存由鍵值key和值value組合而成的元素。
2. 在map
中,鍵值
key通常用於排序和惟一地標識元素,而值
value
中儲存與此鍵值
key關聯的內容。鍵值
key和值value
的型別可能不同,並且在
map的內部,
key與
value
通過成員型別
value_type
繫結在一起,
為其取別名稱為
pair:
typedef pair value_type;
3. 在內部,
map中的元素總是按照鍵值
key進行比較排序的。
4. map
中通過鍵值訪問單個元素的速度通常比
unordered_map
容器慢,但
map允許根據順序對元素進行
直接迭代(即對
map中的元素進行迭代時,可以得到乙個有序的序列)。
5. map
支援下標訪問符,即在
中放入key
,就可以找到與
key對應的
value。
6. map
通常被實現為二叉搜尋樹
(更準確的說:平衡二叉搜尋樹
(紅黑樹))。
map的總結:
1. map
中的的元素是鍵值對
2. map
中的key
是唯一的,並且不能修改
3. 預設按照小於的方式對
key進行比較
4. map
中的元素如果用迭代器去遍歷,可以得到乙個有序的序列
5. map
的底層為平衡搜尋樹
(紅黑樹
),查詢效率比較高
6. 支援
操作符,
operator
中實際進行插入查詢。
set的簡介:
1. set
是按照一定次序儲存元素的容器
2. 在set
中,元素的
value
也標識它
(value
就是key
,型別為
t),並且每個
value
必須是唯一的。
set中的元素
不能在容器中修改
(元素總是
const)
,但是可以從容器中插入或刪除它們。
3. 在內部,
set中的元素總是按照其內部比較物件
(型別比較
)所指示的特定嚴格弱排序準則進行排序。
4. set
容器通過
key訪問單個元素的速度通常比
unordered_set
容器慢,但它們允許根據順序對子集進行直
接迭代。
5. set
在底層是用二叉搜尋樹
(紅黑樹
)實現的。
STL之關聯式容器
sets 沒有重疊的數字,沒有權利指定新元素的位置 set typedef std set obj obj col col.insert 3 col.insert 1 col.insert 5 col.insert 4 col.insert 1 col.insert 6 col.insert 2 f...
STL之關聯式容器
在接觸容器初,我們學習了stl中的部分容器,如 vector,list,deque 等,這些容器統一稱為序列式容器。因為其底層為線性序列的的資料結構,裡面儲存的是元素本身。關聯式容器就有所不同 關聯式容器也是用來儲存與序列式容器不同的是,裡面儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。用...
STL之關聯式容器set map
1.管理元素集合的stl容器大致分為兩類,序列式容器 有順序的集合 和關聯式容器 經過排序的集合 2.關聯式容器再管理資料的過程中會自動給元素排序。其優點在於可以隨時採用二分搜尋法,搜尋元素的效率極高。1.set是根據元素值進行排序的集合,所插入的元素在集合中唯一,不存在重複元素。1.include...