- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 主页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <原子>
- C++ 库 - <复杂>
- C++ 库 - <异常>
- C++ 库 - <功能>
- C++ 库 - <限制>
- C++ 库 - <语言环境>
- C++ 库 - <内存>
- C++ 库 - <新>
- C++ 库 - <数字>
- C++ 库 - <正则表达式>
- C++ 库 - <stdexcept>
- C++ 库 - <字符串>
- C++ 库 - <线程>
- C++ 库 - <元组>
- C++ 库 - <类型信息>
- C++ 库 - <实用程序>
- C++ 库 - <valarray>
C++ 库 - <unordered_map>
unordered_map简介
无序映射是类似字典的数据结构。它是一个(键,值)对序列,其中每个唯一键仅与单个值相关联。它通常被称为关联数组。它可以根据键快速检索各个元素。它还实现了直接访问运算符(下标运算符[]),它允许使用其键值作为参数直接访问映射值。
无序映射不会根据其键或映射值以任何特定顺序对其元素进行排序,而是根据其哈希值将其组织到存储桶中,以允许直接通过其键值快速访问各个元素。
通过键访问各个元素时,无序映射比映射表现更好。但对于范围迭代,它们的性能相当低。
定义
以下是 <unordered_map> 头文件中 std::unordered_map 的定义
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > > class unordered_map;
参数
Key - 密钥的类型。
T - 映射值的类型。
Hash - 一种一元函数对象类型,它采用key类型的对象作为参数,并基于它返回size_t类型的唯一值。
Pred - 一个二元谓词,其中两个键类型的参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 密钥类型 | Key(模板的第一个参数) |
2 | 映射类型 | T(模板的第二个参数) |
3 | 值类型 | 对<const key_type,mapped_type> |
4 | 散列器 | 第三个模板参数(默认为:hash<key_type>) |
5 | 键等于 | 第四个模板参数(默认为:equal_to<key_type>) |
6 | 分配器类型 | Alloc(模板的第五个参数) |
7 | 参考 | 值类型& |
8 | 常量引用 | 常量值类型& |
9 | 指针 | allocator_traits<分配>::指针 |
10 | 常量指针 | allocator_traits<Alloc>::const_pointer |
11 | 迭代器 | value_type value_type的前向迭代器 |
12 | 常量迭代器 | const value_type value_type的前向迭代器 |
13 | 本地迭代器 | value_type 的前向迭代器 |
14 | 常量局部迭代器 | const value_type 的前向迭代器 |
15 | 差异类型 | ptrdiff_t |
16 | 尺码类型 | 尺寸_t |
来自 <unordered_map> 的函数
下面是 <unordered_map> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | unordered_map::unordered_map 默认构造函数 构造一个具有零个元素的空 unordered_map。 |
2 | unordered_map::unordered_map 复制构造函数 使用现有 unordered_map 中存在的每个元素的副本构造一个 unordered_map。 |
3 | unordered_map::unordered_map 移动构造函数 使用移动语义使用 other 的内容构造一个 unordered_map 。 |
4 | unordered_map::unordered_map 范围构造函数 构造一个 unordered_map ,其元素数量与第一个到最后一个范围内的元素数量相同。 |
5 | unordered_map::unordered_map 初始化列表构造函数 从初始化列表构造一个 unordered_map。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | 无序_映射::~无序_映射
通过释放内存来销毁 unordered_map 对象。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | 无序_映射::at
返回对与键k关联的映射值的引用。 |
2 | unordered_map::begin 容器迭代器 返回一个引用映射的第一个元素的迭代器。 |
3 | unordered_map::begin 桶迭代器 返回一个迭代器,该迭代器指向其一个存储桶中的第一个元素。 |
4 | 无序_映射::桶
返回键为k的元素所在的桶号。 |
5 | unordered_map::bucket_count
返回unordered_map容器中的桶数。 |
6 | 无序映射::桶大小
返回第 n个桶中存在的元素数量。 |
7 | unordered_map::cbegin 容器迭代器 返回一个常量迭代器,它引用 unordered_map 的第一个元素。 |
8 | unordered_map::cbegin 桶迭代器 返回一个常量迭代器,指向其存储桶中的第一个元素。 |
9 | unordered_map::cend 容器迭代器 返回一个常量迭代器,它指向unordered_map 的末尾元素。 |
10 | unordered_map::cend 桶迭代器 返回一个常量迭代器,该迭代器指向其存储桶之一中的末尾元素。 |
11 | unordered_map::清除
通过删除所有元素来销毁 unordered_map 并将 unordered_map 的大小设置为零。 |
12 | 无序_映射::计数
返回与键k关联的映射值的数量。 |
13 | unordered_map::安放
通过插入新元素来扩展容器。 |
14 | 无序_映射::emplace_hint
使用提示作为元素位置在 unordered_map 中插入新元素。 |
15 | unordered_map::空
测试 unordered_map 是否为空。 |
16 | unordered_map::end 容器迭代器 返回一个指向unordered_map 中末尾元素的迭代器。 |
17 号 | unordered_map::结束 桶迭代器 返回一个迭代器,该迭代器指向其存储桶之一中的末尾元素。 |
18 | 无序_映射::等于
返回与特定键匹配的元素范围。 |
19 | unordered_map::擦除 位置版本 从位置删除 unordered_map 的单个元素。 |
20 | unordered_map::擦除 密钥版本 删除与键k关联的映射值。 |
21 | unordered_map::擦除 范围版本 从 unordered_map 中删除元素范围。 |
22 | 无序_映射::查找
查找与键k关联的元素。 |
23 | 无序映射::获取分配器
返回与 unordered_map 关联的分配器。 |
24 | 无序映射::哈希函数
计算unordered_map容器使用的哈希函数对象。 |
25 | 无序_映射::插入
通过在 unordered_map 中插入新元素来扩展容器。 |
26 | unordered_map::插入 移动版本 通过在 unordered_map 中插入新元素来扩展容器。 |
27 | unordered_map::插入 提示版本 通过在 unordered_map 中插入新元素来扩展容器。 |
28 | unordered_map::插入 移动和提示版本 通过插入新元素来扩展 unordered_map。 |
29 | unordered_map::插入 范围版本 通过在 unordered_map 中插入新元素来扩展容器。 |
30 | unordered_map::插入 初始值设定项列表版本 通过从初始值设定项列表插入新元素来扩展映射。 |
31 | 无序_映射::key_eq
返回比较键是否相等的函数。 |
32 | 无序映射::负载因子
返回 unordered_map 容器的当前负载因子。 |
33 | unordered_map::max_bucket_count
返回unordered_map容器可以拥有的最大桶数。 |
34 | unordered_map::max_load_factor 获取版本 返回 unordered_map 容器的当前最大负载因子。 |
35 | unordered_map::max_load_factor 设置版本 为 unordered_map 容器分配新的负载因子。 |
36 | 无序映射::最大大小
返回unordered_map可以容纳的最大元素数。 |
37 | unordered_map::operator= 复制版本 通过替换旧内容将新内容分配给 unordered_map,并在必要时修改大小。 |
38 | unordered_map::operator= 移动版本 将一个 unordered_map 的内容移动到另一个 unordered_map 中,并根据需要修改大小。 |
39 | unordered_map::operator= initializer_list 版本 将元素从初始值设定项列表复制到 unordered_map。 |
40 | unordered_map::运算符[]
如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
41 | unordered_map::operator[] 移动版本 如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
42 | 无序_映射::重新散列
将容器中的桶数设置为n或更多。 |
43 | 无序_映射::保留
将容器中的桶数设置为最适合包含至少n个元素。 |
44 | 无序_映射::大小
返回 unordered_map 中存在的元素数。 |
45 | 无序_映射::交换
与另一个 unordered_map 交换第一个 unordered_map 的内容。 |
非成员重载函数
先生。 | 方法及说明 |
---|---|
1 | unordered_map::运算符==
测试两个 unordered_map 是否相等。 |
2 | unordered_map::运算符!=
测试两个 unordered_map 是否相等。 |
3 | 无序_映射::交换
与另一个 unordered_map 交换第一个 unordered_map 的内容。 |
unordered_multimap简介
Unordered_multimap 是类似字典的数据结构。它是一个(键,值)对的序列,其中不同的元素可以具有相同的键。具有相同键的元素被分组在同一个存储桶中,并且equal_range 迭代器可以迭代所有这些元素。
Unordered_multimap 不会根据其键或映射值以任何特定顺序对其元素进行排序,而是根据其哈希值将其组织到存储桶中,以允许直接通过其键值快速访问各个元素。
定义
以下是 <unordered_map> 头文件中 std::unordered_multimap 的定义
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > > class unordered_multimap;
参数
Key - 密钥的类型。
T - 映射值的类型。
Hash - 一种一元函数对象类型,它采用key类型的对象作为参数,并基于它返回size_t类型的唯一值。
Pred - 一个二元谓词,其中两个键类型的参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 密钥类型 | Key(模板的第一个参数) |
2 | 映射类型 | T(模板的第二个参数) |
3 | 值类型 | 对<const key_type,mapped_type> |
4 | 散列器 | 第三个模板参数(默认为:hash<key_type>) |
5 | 键等于 | 第四个模板参数(默认为:equal_to<key_type>) |
6 | 分配器类型 | Alloc(模板的第五个参数) |
7 | 参考 | 值类型& |
8 | 常量引用 | 常量值类型& |
9 | 指针 | allocator_traits<分配>::指针 |
10 | 常量指针 | allocator_traits<Alloc>::const_pointer |
11 | 迭代器 | value_type value_type的前向迭代器 |
12 | 常量迭代器 | const value_type value_type的前向迭代器 |
13 | 本地迭代器 | value_type 的前向迭代器 |
14 | 常量局部迭代器 | const value_type 的前向迭代器 |
15 | 差异类型 | ptrdiff_t |
16 | 尺码类型 | 尺寸_t |
来自 <unordered_multimap> 的函数
下面是 <unordered_map> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | unordered_multimap::unordered_multimap() 默认构造函数 构造一个具有零个元素的空 unordered_multimap。 |
2 | unordered_multimap::unordered_multimap() 复制构造函数 使用现有 unordered_multimap 中存在的每个元素的副本构造一个 unordered_multimap。 |
3 | unordered_multimap::unordered_multimap() 移动构造函数 使用移动语义使用 other 的内容构造一个 unordered_multimap。 |
4 | unordered_multimap::unordered_multimap() 范围构造函数 构造一个 unordered_multimap ,其元素数量与first到last范围内的元素数量相同。 |
5 | unordered_multimap::unordered_multimap() 初始化列表构造函数 从初始化列表构造一个 unordered_multimap。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | unordered_multimap::~unordered_multimap()
通过释放内存来销毁 unordered_multimap 对象。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | unordered_multimap::begin() 容器迭代器 返回一个引用 unordered_mulitmap 的第一个元素的迭代器。 |
2 | unordered_multimap::begin() 桶迭代器 返回一个迭代器,该迭代器指向其一个存储桶中的第一个元素。 |
3 | unordered_multimap::bucket()
返回键为k的元素所在的桶号。 |
4 | unordered_multimap::bucket_count()
返回 unordered_multimap 容器中存在的存储桶数量。 |
5 | unordered_multimap::bucket_size()
返回第 n个桶中存在的元素数量。 |
6 | unordered_multimap::cbegin() 容器迭代器 返回一个常量迭代器,它引用 unordered_multimap 的第一个元素。 |
7 | unordered_multimap::cbegin() 桶迭代器 返回一个常量迭代器,指向其存储桶中的第一个元素。 |
8 | unordered_multimap::cend() 容器迭代器 返回一个常量迭代器,它指向unordered_multimap 的末尾元素。 |
9 | unordered_multimap::cend() 桶迭代器 返回一个常量迭代器,该迭代器指向其存储桶之一中的末尾元素。 |
10 | unordered_multimap::clear()
通过删除所有元素来销毁 unordered_multimap 并将 unordered_multimap 的大小设置为零。 |
11 | unordered_multimap::count()
返回与键k关联的映射值的数量。 |
12 | unordered_multimap::emplace()
通过插入新元素来扩展容器。 |
13 | unordered_multimap::emplace_hint()
使用提示作为元素位置在 unordered_multimap 中插入新元素。 |
14 | unordered_multimap::empty()
测试 unordered_multimap 是否为空。 |
15 | unordered_multimap::end() 容器迭代器 返回一个指向unordered_multimap 中末尾元素的迭代器。 |
16 | unordered_multimap::end() 桶迭代器 返回一个迭代器,该迭代器指向其存储桶之一中的末尾元素。 |
17 号 | unordered_multimap::equal_range()
返回与特定键匹配的元素范围。 |
18 | unordered_multimap::erase() 位置版本 从位置删除 unordered_multimap 的单个元素。 |
19 | unordered_multimap::erase() 密钥版本 删除与键k关联的映射值。 |
20 | unordered_multimap::erase() 范围版本 从 unordered_multimap 中删除元素范围。 |
21 | unordered_multimap::find()
查找与键k关联的元素。 |
22 | unordered_multimap::get_allocator()
返回与 unordered_multimap 关联的分配器。 |
23 | unordered_multimap::hash_function()
计算unordered_multimap容器使用的哈希函数对象。 |
24 | unordered_multimap::insert() 值版本 通过在 unordered_multimap 中插入新元素来扩展容器。 |
25 | unordered_multimap::insert() 移动版本 通过插入新元素来扩展 unordered_multimap。 |
26 | unordered_multimap::insert() 提示版本 通过在 unordered_multimap 中插入新元素来扩展容器。 |
27 | unordered_multimap::insert() 提示移动版本 通过使用移动语义在 unordered_multimap 中插入新元素来扩展容器。 |
28 | unordered_multimap::insert() 范围版本 通过在 unordered_multimap 中插入新元素来扩展容器。 |
29 | unordered_multimap::insert() 初始化列表版本 通过从初始值设定项列表插入新元素来扩展 unordered_multimap。 |
30 | unordered_multimap::key_eq()
返回比较键是否相等的函数。 |
31 | unordered_multimap::load_factor()
返回 unordered_multimap 容器的当前负载因子。 |
32 | unordered_multimap::max_bucket_count()
返回 unordered_multimap 容器可以拥有的最大存储桶数。 |
33 | unordered_multimap::max_load_factor() 获取版本 返回 unordered_multimap 容器的当前最大负载因子。 |
34 | unordered_multimap::max_load_factor() 设置版本 为 unordered_multimap 容器分配新的负载因子。 |
35 | unordered_multimap::max_size()
返回unordered_multimap可以容纳的最大元素数。 |
36 | unordered_multimap::operator=() 复制版本 通过替换旧内容将新内容分配给 unordered_multimap,并在必要时修改大小。 |
37 | unordered_multimap::operator=() 移动版本 将一个 unordered_multimap 的内容移动到另一个 unordered_multimap 中,并根据需要修改大小。 |
38 | unordered_multimap::operator=() 初始化列表版本 将元素从初始值设定项列表复制到 unordered_multimap。 |
39 | unordered_multimap::rehash()
将容器中的桶数设置为n或更多。 |
40 | unordered_multimap::reserve()
将容器中的桶数设置为最适合包含至少n个元素。 |
41 | unordered_multimap::size()
返回 unordered_multimap 中存在的元素数。 |
42 | unordered_multimap::swap()
将第一个 unordered_multimap 的内容与另一个交换。 |
非成员重载函数
先生。 | 方法及说明 |
---|---|
1 | unordered_multimap::operator==()
测试两个 unordered_multimap 是否相等。 |
2 | unordered_multimap::operator!=()
测试两个 unordered_multimap 是否相等。 |
3 | unordered_multimap::swap()
将第一个 unordered_multimap 的内容与另一个交换。 |