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中,...