1. 程式人生 > >STL原始碼剖析(五)【hash_set、hash_map】

STL原始碼剖析(五)【hash_set、hash_map】

hash_set

與set區別及聯絡

  1. 與set大同小異,set以RB-tree作為其底層,而hash_set以hash table作為其底層
  2. 兩者都是藉由其底層操作完成我們所看到的那些操作
  3. 二者最大的不同在於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區別及聯絡

  1. 與map大同小異,map以RB-tree作為其底層,而hash_map以hash table作為其底層
  2. 兩者都是藉由其底層操作完成我們所看到的那些操作
  3. 二者最大的不同在於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!!!

最後歡迎大家來我的小房子踩踩二笙的小房子