STL原始碼剖析(五)【hash_set、hash_map】
阿新 • • 發佈:2018-12-03
hash_set
與set區別及聯絡
- 與set大同小異,set以RB-tree作為其底層,而hash_set以hash table作為其底層
- 兩者都是藉由其底層操作完成我們所看到的那些操作
- 二者最大的不同在於set的底層RB-tree有自動排序功能,所以反映在set中也含有自動排序功能,而hashtable並無自動排序功能,自然hash_set也無自動排序功能
運用hash_set
#include <hash_set> //c++11中使用 #include <unordered_set>
//...
hash_set< int> Set;
hash_multiset
與hash_set一致,不過插入時採用insert_equal,允許重複鍵值,而hash_set採用insert_unique
注意:C++11 中無hash_set,使用時使用unordered_set
hash_map
與map區別及聯絡
- 與map大同小異,map以RB-tree作為其底層,而hash_map以hash table作為其底層
- 兩者都是藉由其底層操作完成我們所看到的那些操作
- 二者最大的不同在於map的底層RB-tree有自動排序功能,所以反映在map中也含有自動排序功能,而hashtable並無自動排序功能,自然hash_map也無自動排序功能
運用hash_map
#include <hash_map> //c++11中使用 #include <unordered_map>
//...
hash_map<int> map;
hash_multimap
與hash_set一致,不過插入時採用insert_equal,允許重複鍵值,而hash_set採用insert_unique
注意:C++11 中無hash_map,使用時使用unordered_map
總結一下,最近一段時間感覺部落格寫的有點不太盡人意,可能是書上重要的東西有點多,導致部落格大都是書上的內容,接下來一段時間的學習會重點放在linux與演算法中,所以這本書的後續內容可能會穿插在其中,等看完本書後會有個比較詳細的一個總結,所以,就這樣吧!Fighting!!!
最後歡迎大家來我的小房子踩踩二笙的小房子