STL(十六)hash map雜湊映照容器

2021-08-07 16:07:36 字數 1476 閱讀 5341

hash_map雜湊映照容器與map映照容器比較相似,都將記錄型的元素劃分為鍵值和映照資料兩個部分,然後根據鍵值的大小,將鍵值不重複的元素插入容器。不同之處在於,hash_map使用雜湊表的資料結構,map使用紅黑樹的資料結構。對於元素的檢索來說,這兩種資料結構都有快速的檢索效率。hash_map檢索時使用的鍵值比較次數少,容器需占用較多的空間,用迭代器遍歷出來的元素是非排序的。map則使用鍊錶的二分法進行檢索,空間使用率高,用迭代器遍歷出來的元素是排序的,而且可提供反向迭代器。

一、hash_map技術原理

二、hash_map應用基礎

#include

1、建立hash_map物件

hash_map()

hash_map(size_type  n)

hash_map(size_type n, const  hasher  &h)

hash_map(size_type n, const hasher &h, const  key_equal &k)

hash_map(const  hash_set &)

2、元素插入

pairinsert(const value_type &v)

void insert(inputiterator  first, inputiterator last)

3、元素的刪除

void   erase(iterator  position)

size_type  erase(const key_type  &k)

void erase(iterator first, iterator last)

void clear()

4、元素的遍歷訪問

iterator  begin()

iterator  end()

#include #include templatestruct studentrecord_tag ;

//typedef key idtype;

typedef studentinfo_tag studentinfo;

//idtype id; //學號

studentinfo sf; //學生資訊,

};int main(void) ,,};

//hash_maphm;

//for (int j=0; j<3; j++)

//迭代器遍歷元素

hash_map::iterator i, iend;

iend = hm.end();

cout << "學號 " << "姓名 " << "年齡 " << "位址 " << endl;

for (i=hm.begin(); i!=iend; i++)

return 0;

}

5、元素的搜尋

iterator   find(const   key_type  &k)  const

6、其他的常用函式

hashmap的雜湊演算法

static final int hash object key int h return key null 0 h key.hashcode h 16 三元運算子 條件表示式?表示式1 表示式2 按位異或運算,只要位不同結果為1,不然結果為0 右移 右邊的位被擠掉,右移一位其值相當於除以2。如圖,...

使用STL的hash map要點

說來慚愧,使用了很久visual stdio 2003了,只知道mfc公升級到了7.0,atl也公升級到了7.0,對於這兩個經典的類庫做了一些研究,但一直沒有注意c 標準庫的變化。今天嘗試的使用了stdext hash map這個庫,果然不錯。下面寫下一些心得。hash map類在標頭檔案hash ...

使用STL的hash map要點

使用了很久visual stdio 2003了,只知道mfc公升級到了7.0,atl也公升級到了7.0,對於這兩個經典的類庫做了一些研究,但一直沒有注意c 標準庫的變化。今天嘗試的使用了stdext hash map這個庫,果然不錯。下面寫下一些心得。hash map類在標頭檔案hash map中,...