C++ Library - <unordered_map>
unordered_map简介
无序地图是数据结构的字典。 它是(键,值)对的序列,其中只有单个值与每个唯一键相关联。 它通常被称为关联数组 。 它可以根据键来快速检索单个元素。 它还实现了直接访问运算符(下标operator []) ,它允许使用其键值作为参数直接访问映射值。
无序映射不会根据其键值或映射值以任何特定顺序对其元素进行排序,而是根据其哈希值组织到存储桶中,以允许通过其键值直接快速访问各个元素。
无序地图在通过其键访问单个元素时比地图执行得更好。 但对于范围迭代,它们的性能相当低。
定义 (Definition)
下面是
template < class Key,
class T,
class Hash = hash<Key>,
class Pred = equal_to<Key>,
class Alloc = allocator< pair<const Key,T> >
> class unordered_map;
参数 (Parameters)
Key - Key类型。
T - 映射值的类型。
Hash - 一种一元函数对象类型,它将类型为key类型的对象作为参数,并根据它返回类型为size_t的唯一值。
Pred - 一个二元谓词,它是键类型的两个参数并返回一个bool。
Alloc - 分配器对象的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | value_type | pair |
4 | hasher | 第三个模板参数(默认为:hash |
5 | key_equal | 第四个模板参数(默认为:equal_to |
6 | allocator_type | Alloc(模板的第五个参数) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | pointer | allocator_traits<Alloc>::pointer |
10 | const_pointer | allocator_traits<Alloc>::const_pointer |
11 | iterator | value_type value_type的前向迭代器 |
12 | const_iterator | const value_type value_type的前向迭代器 |
13 | local_iterator | value_type的前向迭代器 |
14 | const_local_iterator | const value_type的前向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自的函数
以下是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | unordered_map::unordered_map 默认构造函数 构造一个零元素的空unordered_map。 |
2 | unordered_map::unordered_map 复制构造函数 构造一个unordered_map,其中包含现有unordered_map中存在的每个元素的副本。 |
3 | unordered_map::unordered_map 移动构造函数 使用move语义构造带有其他内容的unordered_map。 |
4 | unordered_map::unordered_map 范围构造函数 构造一个unordered_map,其元素与first到last的范围一样多。 |
5 | unordered_map::unordered_map initializer_list构造函数 从初始化列表构造一个unordered_map。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | unordered_map::~unordered_map 通过释放它的内存来销毁unordered_map对象。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
1 | unordered_map::at 返回对与键k关联的映射值的引用。 |
2 | unordered_map::begin 容器迭代器 返回一个迭代器,它引用地图的第一个元素。 |
3 | unordered_map::begin 桶迭代器 返回指向其中一个存储区中第一个元素的迭代器。 |
4 | unordered_map::bucket 返回具有键k的元素所在的桶号。 |
5 | unordered_map::bucket_count 返回unordered_map容器中的桶数。 |
6 | unordered_map::bucket_size 返回第n 个存储桶中显示的元素数。 |
7 | unordered_map::cbegin 容器迭代器 返回一个常量迭代器,它引用unordered_map的第一个元素。 |
8 | unordered_map::cbegin 桶迭代器 返回指向其中一个存储区中第一个元素的常量迭代器。 |
9 | unordered_map::cend 容器迭代器 返回一个常量迭代器,它指向unordered_map的past-the-end元素。 |
10 | unordered_map::cend 桶迭代器 返回一个常量迭代器,它指向其中一个桶中的past-the-end元素。 |
11 | unordered_map::clear 通过删除所有元素来销毁unordered_map,并将unordered_map的大小设置为零 。 |
12 | unordered_map::count 返回与键k关联的映射值的数量。 |
13 | unordered_map::emplace 通过插入新元素来扩展容器。 |
14 | unordered_map::emplace_hint 使用提示作为元素的位置在unordered_map中插入新元素。 |
15 | unordered_map::empty 测试unordered_map是否为空。 |
16 | unordered_map::end 容器迭代器 返回一个迭代器,它指向unordered_map中的past-the-end元素。 |
17 | unordered_map::end bucket iterator 返回一个迭代器,它指向其中一个桶中的past-the-end元素。 |
18 | unordered_map::equal 返回与特定键匹配的元素范围。 |
19 | unordered_map::erase position version 从位置删除unordered_map的单个元素。 |
20 | unordered_map::erase 密钥版本 删除与键k关联的映射值。 |
21 | unordered_map::erase 范围版本 从unordered_map中删除元素范围。 |
22 | unordered_map::find 查找与键k关联的元素。 |
23 | unordered_map::get_allocator 返回与unordered_map关联的分配器。 |
24 | unordered_map::hash_function 计算unordered_map容器使用的哈希函数对象。 |
25 | unordered_map::insert 通过在unordered_map中插入新元素来扩展容器。 |
26 | unordered_map::insert 移动版本 通过在unordered_map中插入新元素来扩展容器。 |
27 | unordered_map::insert 提示版本 通过在unordered_map中插入新元素来扩展容器。 |
28 | unordered_map::insert 移动和提示版本 通过插入新元素来扩展unordered_map。 |
29 | unordered_map::insert 范围版本 通过在unordered_map中插入新元素来扩展容器。 |
30 | unordered_map::insert initializer_list版本 通过从初始化列表中插入新元素来扩展映射。 |
31 | unordered_map::key_eq 返回比较键的相等性的函数。 |
32 | unordered_map::load_factor 返回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::max_size 返回unordered_map可以保存的最大元素数。 |
37 | unordered_map::operator= 复制版本 通过替换旧的内容为unordered_map分配新内容,并在必要时修改大小。 |
38 | unordered_map::operator= 移动版本 将一个unordered_map的内容移动到另一个,并在必要时修改大小。 |
39 | unordered_map::operator= initializer_list版本 将元素从初始化列表复制到unordered_map。 |
40 | unordered_map::operator[] 如果键k与容器中的元素匹配,则method返回对该元素的引用。 |
41 | unordered_map::operator[] 移动版本 如果键k与容器中的元素匹配,则method返回对该元素的引用。 |
42 | unordered_map::rehash 将容器中的桶数设置为n或更多。 |
43 | unordered_map::reserve 将容器中的桶数设置为最适合包含至少n个元素的桶数。 |
44 | unordered_map::size 返回unordered_map中存在的元素数。 |
45 | unordered_map::swap 将第一个unordered_map的内容与另一个交换。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | unordered_map::operator== 测试两个unordered_maps是否相等。 |
2 | unordered_map::operator!= 测试两个unordered_maps是否相等。 |
3 | unordered_map::swap 将第一个unordered_map的内容与另一个交换。 |
unordered_multimap简介
Unordered_multimap是类似数据结构的字典。 它是(键,值)对的序列,其中不同的元素可以具有等效键。 具有等效键的元素在同一个存储桶中组合在一起,并且这样的方式使得equal_range迭代器可以遍历所有这些元素。
Unordered_multimap不会根据其键值或映射值以任何特定顺序对其元素进行排序,而是根据其哈希值组织到存储桶中,以允许通过其键值直接快速访问各个元素。
定义 (Definition)
下面是
template < class Key,
class T,
class Hash = hash<Key>,
class Pred = equal_to<Key>,
class Alloc = allocator< pair<const Key,T> >
> class unordered_multimap;
参数 (Parameters)
Key - Key类型。
T - 映射值的类型。
Hash - 一种一元函数对象类型,它将类型为key类型的对象作为参数,并根据它返回类型为size_t的唯一值。
Pred - 一个二元谓词,它是键类型的两个参数并返回一个bool。
Alloc - 分配器对象的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | value_type | pair |
4 | hasher | 第三个模板参数(默认为:hash |
5 | key_equal | 第四个模板参数(默认为:equal_to |
6 | allocator_type | Alloc(模板的第五个参数) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | pointer | allocator_traits<Alloc>::pointer |
10 | const_pointer | allocator_traits<Alloc>::const_pointer |
11 | iterator | value_type value_type的前向迭代器 |
12 | const_iterator | const value_type value_type的前向迭代器 |
13 | local_iterator | value_type的前向迭代器 |
14 | const_local_iterator | const value_type的前向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自的函数
以下是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | unordered_multimap::unordered_multimap() 默认构造函数 构造一个零元素的空unordered_multimap。 |
2 | unordered_multimap::unordered_multimap() 复制构造函数 构造一个unordered_multimap,其中包含现有unordered_multimap中存在的每个元素的副本。 |
3 | unordered_multimap::unordered_multimap() 移动构造函数 使用move语义构造一个带有其他内容的unordered_multimap。 |
4 | unordered_multimap::unordered_multimap() 范围构造函数 构造一个unordered_multimap,其元素与first到last的范围一样多。 |
5 | unordered_multimap::unordered_multimap() initializer_list构造函数 从初始化列表构造一个unordered_multimap。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | unordered_multimap::~unordered_multimap() 通过释放它的内存来销毁unordered_multimap对象。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
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的past-the-end元素。 |
9 | unordered_multimap::cend() 桶迭代器 返回一个常量迭代器,它指向其中一个桶中的past-the-end元素。 |
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中的past-the-end元素。 |
16 | unordered_multimap::end() 桶迭代器 返回一个迭代器,它指向其中一个桶中的past-the-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() initializer_list版本 通过从初始化列表中插入新元素来扩展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的内容移动到另一个,并在必要时修改大小。 |
38 | unordered_multimap::operator=() initializer_list版本 将元素从初始化列表复制到unordered_multimap。 |
39 | unordered_multimap::rehash() 将容器中的桶数设置为n或更多。 |
40 | unordered_multimap::reserve() 将容器中的桶数设置为最适合包含至少n个元素的桶数。 |
41 | unordered_multimap::size() 返回unordered_multimap中存在的元素数。 |
42 | unordered_multimap::swap() 将第一个unordered_multimap的内容与另一个交换。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | unordered_multimap::operator==() 测试两个unordered_multimaps是否相等。 |
2 | unordered_multimap::operator!=() 测试两个unordered_multimaps是否相等。 |
3 | unordered_multimap::swap() 将第一个unordered_multimap的内容与另一个交换。 |