linux下使用hash map及STL總結

2021-09-06 08:23:03 字數 1208 閱讀 7131

linux下使用hash_map及stl總結

linux下使用hash_map及stl總結

出處:hash_map不是c++標準庫的一部分,但因其重要性很多庫(如sgi stl、boost等)實現了hash_map,包括g++編譯器所帶的標頭檔案也包含了hash_map的實現**(其實現為sgi stl的版本),其在include/ext目錄下,該目錄還包含了hash_set,rope等的實現。

// 檔案/usr/include/c++/4.4.0/ext/hash_map

_glibcxx_begin_namespace(__gnu_cxx)

65 66 using std::equal_to;

67 using std::allocator;

68 using std::pair;

69 using std::_select1st;

70 71 /**

72 * this is an sgi extension.

73 * @ingroup sgiextensions

74 * @doctodo

75 */

76 template,

77 class _equalkey = equal_to<_key>, class _alloc = allocator<_tp> >

78 class hash_map

首先從上述標頭檔案開始的部分可以發現,hash_map定義在__gnu_cxx命名空間中,故你必須在使用時限定名字空間__gnu_cxx::hash_map,或者使用using關鍵字,如下例:

#include

using namespace __gnu_cxx;

int main()

stl其它標頭檔案資訊:

1.幾乎所有的容器都在同名的標頭檔案裡,比如,vector在中宣告,list在中宣告等。例外的是和。宣告了set和multiset,宣告了map和multimap。

2. 除了四個演算法外,所有的演算法都在中宣告。例外的是accumulate、inner_product、adjacent_difference和partial_sum。這些演算法在中宣告。

3.特殊的迭代器,包括istream_iterators和istreambuf_iterators,在中宣告。

4.標準仿函式(比如less)和仿函式介面卡(比如not1、bind2nd)在中宣告。

白話HashMap原始碼(下)

這一篇主要看一下遍歷相關的原始碼。override public boolean containskey object key int hash collections.secondaryhash key hashmapentry tab table for hashmapentrye tab ha...

HashMap原始碼分析 下

本節將分析hashmap的增刪改查 首先來說hashmap的插入流程 1.計算下標 2.何時擴容 3.何時鍊錶轉紅黑樹,具體如下 1 首先進行雜湊值的擾動,獲取新的hash值,key null 0 h key.hashcode h 16 2 判斷tab是否為空或者長度為0,如果是則進行擴容操作。if...

使用entrySet遍歷HashMap

現象描述 在生成環境發現,偶爾生產環境的某台機器cpu使用率很高,經過定位發現是有乙個大的hashmap hashmap裡面存放了大量資料,比如1w條 做迴圈引起的。遍歷乙個hashmap for iterator ite map.keyset iterator ite.hasnext 通過map類...