3關聯容器
pair類型
這個是一個簡單的標準庫類型,該類型在utility頭文件中定義,我們來看看他主要的操作:
pair<T1 ,T2> p1; 創建一個空的pair對象
pair<T1,T2> p1(v1,v2);創建一個pair對象,他的兩個元素分別為T1類型的v1,T2類型的v2
make_pair(v1,v2); 以v1,v2創建一份新的pair對象,相信在map這一塊我們將會見面的
p1<p2,p1==p2
p1.first 返回p中名為first的數據成員
p1,second 返回p中名為second的數據成員
3.1特點
set, multiset, map,multimap 是一種非線性的樹結構,具體的說采用的是一種比較高效的特殊的平衡檢索二叉樹——紅黑樹結構。(至于什么是紅黑樹,可以看看數據結構)
因為關聯容器的這四種容器類都使用同一原理,所以他們核心的算法是一致的,但是它們在應用上又有一些差別,先描述一下它們之間的差別。
set 又稱集合,實際上就是一組元素的集合,但其中所包含的元素的值是唯一的,且是按一定順序排列的,集合中的每個元素被稱作集合中的實例。因為其內部是通過鏈表的方式來組織,所以在插入的時候比vector 快,但在查找和末尾添加上比vector 慢。
multiset 是多重集合,其實現方式和set 是相似的,只是它不要求集合中的元素是唯一的,也就是說集合中的同一個元素可以出現多次。
map 提供一種“鍵- 值”關系的一對一的數據存儲能力。其“鍵”在容器中不可重復,且按一定順序排列(其實我