背景:
hash_map 不是C++ 11 的标准
在vc中编译时:
#include<hash_map>usingnamespce stdext;hash_map myhash;
在GCC中编译时:
#include <ext/hash_map>
using namespace _gnu_cxx;
hash_map<int, int> myhash;
unordered_map:
在c++11 中, 加入了undered 系列的容器。undered_map 记录原始的hash值, 根据hash值判断元素是否相同。
查找,插入时:unordered_map > hash_map > map;
空间复杂度: hash_map < unordered_map < map;
unoedered_map 模板:
template //hasherclassPred=equal_to //key_equalclassAlloc=allocator> //allocator_typr>classunordered_map;
unoedered_map 迭代器:
迭代器是一个指针, 指向这个元素。
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 成员函数:
------------迭代器:
begin: 返回只想容器的起始位置迭代器(iterator)
end: 返回只想容器的末尾位置迭代器
cbegin: 返回指向容器起始位置的常迭代器(const_iterator)
cend: 返回指向容器末尾位置的常迭代器
-------------Capacity
size: 返回有效元素个数
max_size: 返回unordered_map 支持的最大元素个数
empty: 判断是否为空
-------------元素访问:
operator[]: 访问元素
at: 访问元素
-------------迭代器修改:
insert: 插入元素
erase: 删除元素
swap: 交换内容
clear: 清空内容
emplace 构造以及插入一个元素
emplace_hint 按照提示构造以及插入一个元素
--------------------迭代器操作
find: 通过给定主键查找元素 ,没有找到: 返回unordered_map::end()
count: 返回匹配给定搜索值得元素得个数(可以看出, key值可以重复)
equal_rang: 返回值匹配给定搜索值得元素组成范围
------------------Buckets
bucket_count: 返回槽(Bucket)数
max_bucket_count: 返回最大槽数
bucket_size: 返回槽大小
bucket: 返回元素所在槽序列号
load_factor: 返回载入因子, 即一个元素槽(Bucket)的最大元素数
max_load_factor: 返回或者设置最大载入因子
rehash: 设置槽数
reserve: 请求改变容器数量
网友评论