關聯容器(五) unordered map

2021-07-08 19:51:30 字數 2409 閱讀 5051

介紹:

雜湊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...