C++ unordered_map
1、unordered_map简介
unordered_map是C++11正式加入的对hash_map的官方实现。元素在内部不以任何特定顺序排序,而是放进桶中。元素放进哪个桶完全依赖于其键的hash。这允许对单独元素的快速访问,因为一旦计算hash,则它准确指代元素所放进的桶。但unordered_map搜索、插入和元素移除拥有平均常数时间复杂度。
2、头文件
1
| #include <unordered_map>
|
3、成员函数
成员函数 |
函数功能 |
insert |
在unordered_map中插入元素。 |
emplace |
构造新元素并将其插入unordered_map。 |
emplace_hint |
通过提示构造新元素并将其插入unordered_map。 |
find |
搜索具有给定键的元素。 |
begin |
返回指向unordered_map中第一个元素的迭代器。 |
end |
返回指向末尾的迭代器。 |
cbegin |
返回指向unordered_map中第一个元素的const迭代器。 |
cend |
返回指向末尾的常量迭代器。 |
clear |
删除unordered_map的所有元素。 |
size |
返回unordered_map中的元素数。 |
max_size |
返回unordered_map的最大容量。 |
count |
返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。 |
empty |
如果unordered_map为空,则返回true。 |
erase |
从unordered_map上删除元素。 |
upper_bound |
返回第一个大于值val的位置 |
lower_bound |
返回第一个大于等于值val的位置 |
swap |
交换unordered_map内容。 |
at |
用给定的键检索元素。 |
bucket_count |
返回槽(Bucket)数 |
max_bucket_count |
返回最大槽数 |
bucket_size |
返回槽大小 |
bucket |
返回元素所在槽的序号 |
load_factor |
返回载入因子,即一个元素槽(Bucket)的最大元素数 |
max_load_factor |
返回或设置最大载入因子 |
rehash |
设置槽数 |
reserve |
请求改变容器容量 |
3.1 插入操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| unordered_map<int, string> m;
m[1] = "zhangsan";
pair<iterator,bool> insert (const value_type& val);
iterator insert (const_iterator position, const value_type& val);
void insert (InputIterator first, InputIterator last);
void insert (initializer_list<value_type> il);
|
3.2 取值操作
unordered_map中元素取值主要有at和[ ]两种操作。
1 2 3 4
| unordered_map<int, string> m;
cout << m[1] << endl; cout << m.at(1) << endl;
|
3.3 容量查询
1 2 3 4 5 6 7 8 9 10 11 12
| bool empty();
size_t size();
size_t max_size();
size_t count(const Key& key) const;
|
3.4 删除操作
1 2 3 4 5 6 7 8 9 10 11
| iterator erase( iterator pos )
iterator erase( const_iterator first, const_iterator last );
size_t erase( const key_type& key );
void clear();
|
3.5 查找操作
1 2 3 4
|
iterator find (const key_type& k); const_iterator find (const key_type& k) const;
|