STL原始碼剖析筆記 5關聯式容器

2021-07-29 21:31:49 字數 648 閱讀 4936

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)
次集團:兩個元素經雜湊函式計算出來的位置若相同,則插入時所探測的位置也相同,形成某種浪費。利用再雜湊(double hashing)可以消除次集團。

開鏈:在每個**的元素中維護乙個list。

雜湊表的迭代器沒有後退操作(operator–()),也就沒有逆向迭代器。

雜湊表的每個元素的list的最大容量就是**vector的大小。當元素個數大於**vector的大小時就需要重建**。

雜湊函式可以處理的型別有:char*、const char*、char、unsigned char、signed char、short、unsigned short、int、unsigned int、long、unsigned long.像string、double、float這些型別是無法處理的需要使用者自行定義雜湊函式。

STL原始碼剖析 關聯式容器

一 set 所有元素都會根據元素的鍵值自動排序,set元素不像map那樣可以同時擁有key和value,set元素的鍵值就是實值,set不允許有兩個相同元素的鍵值。二 map 所有元素都會根據元素的鍵值自動排序,map不允許有兩個元素有相同的鍵值。以紅黑樹作為底層機制,每乙個節點上的內容是乙個pai...

STL原始碼剖析筆記

在stl中,迭代器使得容器與演算法分離開來,迭代器會定義五種型別。hash table是一種資料結構,和rb tree類似。其中set map multi set multi map都是基於rb tree。在stl中,patial sort 和nth element 不一樣。patial sort是...

《STL原始碼剖析學習筆記》

1 演算法泛化過程 首先是模板 適應不同型別 其次是迭代器 具有原生指標行為的類 最後是仿函式 行為類似函式指標,但更適合泛化 泛化的優點 個人總結 1 簡化程式,提高 的可重用性 2 提高了程式的通用性 3 提高了程式的可讀性 4 提高了安全性 函式指標及仿函式 首先說說函式指標,乙個程式可能需要...