介紹:
雜湊map是一種關聯容器,通過鍵值和對映值儲存元素。允許根據鍵值快速檢索各個元素。
在內部unordered_map的元素不以鍵值或對映的元素作任何特定的順序排序,其儲存位置取決於雜湊值,unordered_map容器比map容器更快地通過鍵值訪問他們的單個元素(hash表的思想,以空間換時間),類似下圖:
(鍵,值)對是插入的資料;
索引即對應桶(bucket);
雜湊碼對應雜湊函式的演算法(庫中可通過hash_function獲取雜湊函式);
常用函式:
(1) 建構函式/賦值
operator=使用另乙個unordered_map的拷貝替換unorder
(2) 增加函式/刪除函式
clear清空unordered_map
erase從unordered_map中移除指定位置或範圍的元素
emplace插入乙個元素(不執行copy或move操作)到unorder
emplace_hint插入乙個元素(不執行copy或move操作)到unorder
insert在unordered_map的指定位置插入一或多個元素
(3) 遍歷函式/訪問函式
at返回unordered_map中指定map鍵對應的map值
begin返回指向unordered_map中第乙個元素的forward
end返回指向unordered_map的結尾位置之後位置的迭代器
cbegin返回指向unordered_map中第乙個元素的const迭
cend返回指向unordered_map的結尾位置之後位置的con
equal_range返回匹配指定key的子串行
operator在unordered_map中查詢或插入乙個元素
(4)查詢/替換/比較
find返回指向unordered_map中指定key的元素位置的迭
key_eq返回建立unordered_map使用的comparison
(5) 判斷函式
empty如果unordered_map為空,返回true
(6) 大小函式/個數函式
count返回unordered_map中指定鍵對應的元素個數
max_size返回unordered_map的最大長度
size返回unordered_map中的元素個數
(7) 其他函式
get_allocator返回建立unordered_map的allocator的拷貝
reserve更改unordered_map物件的容量
swap交換兩個unordered_map中的元素
(8)雜湊相關
bucket返回指定mapkey的bucket索引
bucket_count得到bucket的個數
bucket_size返回bucket的大小(size)
hash_function返回建立unordered_map使用的hashfuncti
load_factor返回每個bucket中元素的平均個數
max_bucket_count返回map中bucket的最大個數
max_load_factor得到或設定每個bucket中元素的最大個數
rehashrehash當前unordered_map(當hashmap的容量達到threshold時就需要進行擴容,這個時候就要進行rehash操作了,在擴容的過程中需要進行rehash操作,而這是非常耗時的,在實際中應該盡量避免。)
示例**:
#include "stdafx.h"
#include #include #include #include #include //greater必須包含此檔案
#include #include using namespace std;
int _tmain(int argc, _tchar* argv)
輸出:
dddd,bucket:5
bbbb,bucket:5
cccc,bucket:1
aaaa,bucket:1
maptest["dddd"]:5555
maptest.at("dddd"):5555
maptest.find("dddd"):dddd,5555
5hasher code of ("dddd"):1290481081
aaaa雜湊表中對應桶為:1
bbbb雜湊表中對應桶為:5
雜湊表中桶的數量:8
key_equal:0
請按任意鍵繼續. . .
容器 順序容器 關聯容器
容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...
STL 關聯容器
1 關聯容器與順序容器的本質區別 關聯容器通過鍵 key 儲存和讀取元素,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。2 關聯容器的型別 map set multimap multiset 3 pair型別 pair型別的比較 p1 p1 p2 如果兩個pair物件的first和secon...
c 關聯容器
1.map建構函式 mapm 普通初始化 mapm m2 複製初始化法 mapm b,e 另乙個map物件的迭代器初始化法 注意 1 鍵值型別必須定義 操作符號,資料訪問時需要呼叫。2 m aaa 下表訪問方式導致的結果是,若鍵對應的值不存在,則插入該鍵值對應的預設值。2.map插入操作 m.ins...