背景:
hash_map 不是C++ 11 的標(biāo)準(zhǔn)
在vc中編譯時(shí):
#include<hash_map>usingnamespce stdext;hash_map myhash;
在GCC中編譯時(shí):
#include <ext/hash_map>
using namespace _gnu_cxx;
hash_map<int, int> myhash;
unordered_map:
在c++11 中未斑, 加入了undered 系列的容器宴猾。undered_map 記錄原始的hash值, 根據(jù)hash值判斷元素是否相同摹察。
查找芬萍,插入時(shí):unordered_map > hash_map > map;
空間復(fù)雜度: hash_map < unordered_map < map;
unoedered_map 模板:
template? ? ? ? ? ? //hasherclassPred=equal_to? ? ? ? //key_equalclassAlloc=allocator>? ? //allocator_typr>classunordered_map;
unoedered_map 迭代器:
迭代器是一個(gè)指針脓杉, 指向這個(gè)元素信粮。
unordered_map::iterator it;(*it).first;//the key value(key_type:Key)(*it).second;//the mapped value(mapped_type:T)(*it);//the element value(type pair<const Key, T>)
它的鍵值分別是迭代器的first和second屬性。
undered_map 成員函數(shù):
------------迭代器:
begin:? ? 返回只想容器的起始位置迭代器(iterator)
end:? ? ? ?返回只想容器的末尾位置迭代器
cbegin:? ?返回指向容器起始位置的常迭代器(const_iterator)
cend:? ? ? 返回指向容器末尾位置的常迭代器
-------------Capacity
size:? ? ? ? ? ? ?返回有效元素個(gè)數(shù)
max_size:? ? 返回unordered_map 支持的最大元素個(gè)數(shù)
empty:? ? ? ? ? 判斷是否為空
-------------元素訪問:
operator[]:? ? ? ? ? ?訪問元素
at:? ? ? ? ? ? ? ? ? ? ? ? 訪問元素
-------------迭代器修改:
insert:? ? ? ? 插入元素
erase:? ? ? ? ?刪除元素
swap:? ? ? ?交換內(nèi)容
clear:? ? ? ? ? 清空內(nèi)容
emplace? ? ?構(gòu)造以及插入一個(gè)元素
emplace_hint 按照提示構(gòu)造以及插入一個(gè)元素
--------------------迭代器操作
find:? ? ? ? 通過給定主鍵查找元素 男旗,沒有找到:?返回unordered_map::end()
count:? ? ?返回匹配給定搜索值得元素得個(gè)數(shù)(可以看出舶斧, key值可以重復(fù))
equal_rang:? ?返回值匹配給定搜索值得元素組成范圍
------------------Buckets
bucket_count:? ? ? ? ? ? 返回槽(Bucket)數(shù)
max_bucket_count:? ? 返回最大槽數(shù)
bucket_size:? ? ? ? ? ? ? ?返回槽大小
bucket:? ? ? ? ? ? ? ? ? ? ?返回元素所在槽序列號(hào)
load_factor:? ? ? ? ? ? ? ? ?返回載入因子, 即一個(gè)元素槽(Bucket)的最大元素?cái)?shù)
max_load_factor:? ? ? ? 返回或者設(shè)置最大載入因子
rehash:? ? ? ? ? ? ? ? ? ? ? ? 設(shè)置槽數(shù)
reserve:? ? ? ? ? ? ? ? ? ? ? ? 請(qǐng)求改變?nèi)萜鲾?shù)量