一、set
所有元素都會根據元素的鍵值自動排序,set元素不像map那樣可以同時擁有key和value,set元素的鍵值就是實值,set不允許有兩個相同元素的鍵值。
二、map
所有元素都會根據元素的鍵值自動排序,map不允許有兩個元素有相同的鍵值。以紅黑樹作為底層機制,每乙個節點上的內容是乙個pair,pair的第乙個元素是鍵值,第二個元素為實值。
三、multiset
特性與set完全相同,唯一區別鍵值允許重複。那是因為它的插入操作是底層機制rb-tree的insert-equal()而非insert_unique().
四、hash_table
線性探測:迴圈一一尋找,如果到達尾端,就繞道頭部進行下去。
二次探測:h,h+1,h+4,h+9…….
開鏈探測:為**中的每乙個元素維護乙個list,然後在list身上執行元素的插入、搜尋、刪除等操作,負載係數將大於1。sgi stl
中的hash_table便是採用這種做法。sgi stl中採用質數來設計**的大小。傳入引數n時,找到大於或等於n最小的那個質數
五、hash_set
以hash_table為底層實現機制,由於rb-tree有自動排序功能而hash_table沒有,所以set元素有自動排序,而hash_set是沒有的。
六、hash_map
以hash_table為底層實現機制,由於rb-tree有自動排序功能而hash_table沒有,所以map元素有自動排序,而hash_map是沒有的。
STL原始碼剖析筆記 5關聯式容器
2 rb tree 3 set 4 map 5 multiset 6 multimap 7 hashtable 8511 hash sethash maphash multisethash multimap t operator const key types k 次集團 兩個元素經雜湊函式計算出來...
《STL原始碼剖析》 序列式容器
stl原始碼剖析 前言 所謂的序列式容器,其中的元素都可序,但未必有序,c 本身提供了乙個序列式容器array,stl 提供了vector,list,deque,srack,queue,priority queue等 一.使用reverse 函式提前設定容量大小 1.1 提前設定的原因 對於vect...
STL原始碼剖析之序列式容器
最近由於找工作需要,準備深入學習一下stl原始碼,我看的是侯捷所著的 stl原始碼剖析 之所以看這本書主要是由於我過去曾經接觸過一些台灣人,我一直覺得台灣人非常不錯 這裡不涉及任何政治,僅限個人感受 在技術上他們比較嚴謹,在為人處世上也非常謙虛,所以一些台灣的技術資料我覺得是值得一看的。想要學習st...