C++ STL:unordered_map

2020-04-04  本文已影响0人  龙虾1991

背景:

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:                        请求改变容器数量

上一篇 下一篇

猜你喜欢

热点阅读