unordered_map简介
无序地图是类似于数据结构的字典.它是(键,值)对的序列,其中只有单个值与每个唯一键相关联.它通常被称为 associative array .它可以根据键来快速检索单个元素.它还实现了直接访问运算符(下标operator []),它允许使用其键值作为参数直接访问映射值.
无序映射确实不按照任何特定顺序对其元素的键值或映射值进行排序,而是根据其哈希值组织到桶中,以允许直接通过键值快速访问各个元素.
无序地图在按键访问单个元素时比地图表现更好.但是对于范围迭代,它们的性能相当低.
定义
以下是来自< unordered_map>的std :: unordered_map的定义.头文件
template < class Key, class T, class Hash = hash, class Pred = equal_to , class Alloc = allocator< pair > > class unordered_map;
参数
Key : 密钥的类型.
T : 映射值的类型.
哈希 : 一个一元函数对象类型,它将类型为 key 的对象作为参数,并根据它返回类型 size_t 的唯一值.
Pred : 二进制谓词,其中键类型的两个参数并返回一个bool.
Alloc ;分配器对象的类型.
T可以被任何其他数据类型替换,包括用户定义的类型.
成员类型
以下成员类型可以用作参数或按成员函数返回类型.
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | value_type | pair< const key_type,mapped_type> |
4 | hasher | 第三个模板参数(默认为:hash< key_type>) |
5 | key_equal | 第四个模板参数(默认为:equal_to< key_type>) |
6 | allocator_type | Alloc(模板的第五个参数) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | pointer | allocator_traits< Alloc> ::指针 |
10 | const_pointer | allocator_traits< Alloc> :: const_pointer |
11 | iterator | value_type的前向迭代器 value_type |
12 | const_iterator | const value_t的前向迭代器ype value_type |
13 | local_iterator | value_type的转发迭代器 |
14 | const_local_iterator | const value_type的转发迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自< unordered_map>的函数
以下是来自< unordered_map>的所有方法的列表标题.
构造函数
Sr.No. | 方法&说明 |
---|---|
1 | unordered_map::unordered_map 默认构造函数 构造一个零元素的空unordered_map. |
2 | unordered_map :: unordered_map 复制构造函数 构造一个unordered_map,其中包含现有unordered_map中存在的每个元素的副本. |
3 | unordered_map :: unordered_map move constructor 使用move语义构造带有其他内容的unordered_map. |
4 | unordered_map :: unordered_map 范围构造函数 使用 first 到范围内的元素构造一个unordered_map最后. |
5 | unordered_map :: unordered_map initializer_list构造函数 从初始化列表构造一个unordered_map. |
析构函数
Sr.No. | 方法&说明 |
---|---|
1 | unordered_map:::unordered_map 通过解除分配内存来销毁unordered_map对象. |
成员函数
Sr.No. | Method&说明 |
---|---|
1 | unordered_map::at 返回与键 k 关联的映射值的引用. |
2 | unordered_map :: begin container iterator 返回一个迭代器,它引用地图的第一个元素. |
3 | unordered_map :: begin bucket iterator 返回指向其中一个存储区中第一个元素的迭代器. |
4 | unordered_map::bucket 返回具有键 k 的元素所在的桶号. |
5 | unordered_map :: bucket_count 返回unordered_map容器中的桶数. |
6 | unordered_map :: bucket_size 返回n 中显示的元素数量桶. |
7 | unordered_map :: cbegin container iterator 返回引用第一个的常量迭代器unordered_map的元素. |
8 | unordered_map :: cbegin bucket iterator 返回一个指向其中一个桶中第一个元素的常量迭代器. |
9 | unordered_map :: cend 容器迭代器 返回一个常量迭代器,它指向unordered_map的 past-the-end 元素./p> |
10 | unordered_map :: cend bucket iterator 返回指向 past-the-end的常量迭代器其中一个桶中的元素. |
11 | unordered_map :: clear 通过删除所有el来销毁unordered_map并将unordered_map的大小设置为 0 . |
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 container iterator 返回指向 |
17 | unordered_map :: end bucket iterator 返回一个迭代器,它指向其中一个桶中的 past-the-end 元素. |
18 | unordered_map :: equal 返回与特定键匹配的元素范围. |
19 | unordered_map :: erase position version 从 position 中删除unordered_map的单个元素. |
20 | unordered_map :::erase 密钥版本 删除与密钥 k 关联的映射值. |
21 | unordered_map :::erase range version 从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 move and hint version 通过插入新元素来扩展unordered_map. |
29 | unordered_map: :insert range version 通过在unordered_map中插入新元素来扩展容器. |
30 | unordered_map :: insert initializer_list version 通过从初始化列表中插入新元素来扩展地图. |
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 获取版本的 ř eturns 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 version 将元素从初始化列表复制到unordered_map. |
40 | unordered_map :: operator [] 如果key k 与容器中的元素匹配,则method返回对该元素的引用. |
41 | UNO rdered_map :: operator [] 移动版本 如果key k 匹配容器中的元素,则method返回对元素的引用. |
42 | unordered_map :: rehash 将容器中的桶数设置为 n 或更多. |
43 | unordered_map :: reserve 将容器中的桶数设置为最适合包含 n的桶 elements. |
44 | unordered_map :: size 返回unordered_map中存在的元素数. |
45 | unordered_map :: swap 将第一个unordered_map的内容与另一个交换. |
非会员重载函数
Sr.No. | Method&说明 |
---|---|
1 | unordered_map::operator== 测试两个unordered_maps是否相等. |
2 | unordered_map :: operator!= 测试两个unordered_maps是否相等. |
3 | unordered_map :: swap 将第一个unordered_map的内容与另一个交换. |
简介to unordered_multimap
Unordered_multimap是类似数据结构的字典.它是(键,值)对的序列,其中不同的元素可以具有等效键.具有等效键的元素在同一个桶中组合在一起,并且 equal_range迭代器可以遍历所有元素.
Unordered_multimap不对其进行排序关于其键值或映射值的任何特定顺序的元素,而是根据其哈希值组织到桶中,以允许直接通过其键值快速访问各个元素.
定义
下面是来自< unordered_map>的std :: unordered_multimap的定义.头文件
template < class Key, class T, class Hash = hash, class Pred = equal_to , class Alloc = allocator< pair > > class unordered_multimap;
参数
Key : 密钥的类型.
T : 映射值的类型.
哈希 : 一个一元函数对象类型,它将类型为 key 的对象作为参数,并根据它返回类型 size_t 的唯一值.
Pred : 二进制谓词,其中键类型的两个参数并返回一个bool.
Alloc ;分配器对象的类型.
T可以被任何其他数据类型替换,包括用户定义的类型.
成员类型
以下成员类型可以用作参数或按成员函数返回类型.
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | value_type | pair< const key_type,mapped_type> |
4 | hasher | 第三个模板参数(默认为:hash< key_type>) |
5 | key_equal | 第四个模板参数(默认为:equal_to< key_type>) |
6 | allocator_type | Alloc(模板的第五个参数) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | 指针 | allocator_traits< Alloc> ::指针 |
10 | const_pointer | allocator_traits< Alloc> :: const_pointer |
11 | iterator | value_type的前向迭代器 value_type |
12 | const_iterator | const value_t的前向迭代器ype value_type |
13 | local_iterator | value_type的转发迭代器 |
14 | const_local_iterator | const value_type的转发迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自< unordered_multimap>
的函数
以下是来自< unordered_map>的所有方法的列表标题.
构造函数
Sr.No. | 方法&说明 |
---|---|
1 | unordered_multimap :: unordered_multimap() 默认构造函数 构造一个零元素的空unordered_multimap. |
2 | unordered_multimap :: unordered_multimap() 复制构造函数 构造一个unordered_multimap,其中包含现有unordered_multimap中存在的每个元素的副本. |
3 | unordered_multimap :: unordered_multimap() move constructor 使用move语义构造带有其他内容的unordered_multimap. |
4 | unordered_multimap :: unordered_multimap() 范围构造函数 构造一个unordered_multimap,其元素数量在 first 到 last 的范围内. |
5 | unordered_multimap :: unordered_multimap() initializer_list构造函数 从初始化列表构造一个unordered_multimap. |
析构函数
Sr.No. | Method&说明 |
---|---|
1 | unordered_multimap :: ~unordered_multimap() 通过释放它的内存来销毁unordered_multimap对象. |
会员功能
$b$ b
Sr.No. | 方法&说明 |
---|---|
1 | unordered_multimap :: begin() 容器迭代器 返回一个迭代器,它引用unordered_mulitmap的第一个元素. |
2 | unordered_multimap :: begin() bucket iterator 返回指向其中一个存储区中第一个元素的迭代器. |
3 | unordered_multimap :: bucket() 返回具有键 k 的元素所在的存储桶编号. |
4 | unordered_multimap :: bucket_count() 返回unordered_multimap容器中存在的桶数. |
5 | unordered_multimap :: bucket_size() 返回n th 桶中的元素数. |
6 | unordered_multimap: :cbegin() 容器迭代器 返回一个常量迭代器,它引用unordered_multimap的第一个元素. |
7 | unordered_multimap :: cbegin() bucket iterator 返回一个指向它的常量迭代器其中一个桶中的第一个元素. |
8 | unordered_multimap :: cend() 容器迭代器 返回一个常量迭代器指向unordered_multimap的 past-the-end 元素. |
9 | unordered_multimap :: cend() bucket iterator 返回一个常量迭代器,它指向其中一个桶中的 past-the-end 元素. |
10 | unordered_multimap :: clear() 通过删除所有元素来销毁unordered_multimap,并将unordered_multimap的大小设置为 0 . |
11 | unordered_multimap :: count() 返回与键 k 关联的映射值的数量. |
12 | unordered_multimap :: \\ templace() 通过插入新元素来扩展容器. |
13 | unordered_multimap :: emplace_hint() 使用提示作为元素的位置在unordered_multimap中插入一个新元素. |
14 | unordered_multimap :: empty() 测试是否unordered_multimap是空的. |
15 | unordered_multimap :: end() 容器迭代器 返回指向 |
16 | unordered_multimap :: end() bucket iterator 返回一个迭代器,它指向其中一个桶中的 past-the-end 元素. |
17 | unordered_multimap::equal_range() Returns range of elements that matches specific key. |
18 | unordered_multimap::erase() position version Removes single element of the unordered_multimap from position. |
19 | unordered_multimap::erase() key version Removes mapped value associated with key k. |
20 | unordered_multimap::erase() range version Removes range of element from the the unordered_multimap. |
21 | unordered_multimap::find() Finds an element associated with key k. |
22 | unordered_multimap::get_allocator() Returns an allocator associated with unordered_multimap. |
23 | unordered_multimap::hash_function() Calculates the hash function object used by the unordered_multimap container. |
24 | unordered_multimap::insert() value version Extends container by inserting new element in unordered_multimap. |
25 | unordered_multimap::insert() move versio n Extends unordered_multimap by inserting new element. |
26 | unordered_multimap::insert() hint version Extends container by inserting new element in unordered_multimap. |
27 | unordered_multimap::insert() hint move version Extends container by inserting new element in unordered_multimap by using move semantics. |
28 | unordered_multimap::insert() range version Extends container by inserting new elements in the unordered_multimap. |
29 | unordered_multimap::insert() initializer_list version Extends unordered_multimap by inserting new element from initializer list. |
30 | unordered_multimap::key_eq() Returns the function that compares keys for equality. |
31 | unordered_multimap::load_factor() Returns the current load factor of the unordered_multimap container. |
32 | unordered_multimap::max_bucket_count() Returns the maximum number of buckets that the unordered_multimap container can have. |
33 | unordered_multimap::max_load_factor() get version Returns the current maximum load factor for the unordered_multimap container. |
34 | unordered_multimap::max_load_factor() set version Assigns new load factor for the unordered_multimap container. |
35 | unordered_multimap::max_size() Returns the maximum number of elements can be held by unordered_multimap. |
36 | unordered_multimap::operator=() copy version Assigns new contents to the unordered_multimap by replacing old ones and modifies size if necessary. |
37 | unordered_multimap::operator=() move version Move the contents of one unordered_multimap into another and modifies size if necessary. |
38 | unordered_multimap::operator=() initializer_list version Copy elements from initializer list to unordered_multimap. |
39 | unordered_multimap::rehash() Sets the number of buckets in the container to n or more. |
40 | unordered_multimap::reserve() Sets the number of buckets in the container to the most appropriate to contain at least n elements. |
41 | unordered_multimap::size() Returns the number of elements present in the unordered_multimap. |
42 | unordered_multimap::swap() Exchanges the content of first unordered_multima p with another. |
Non-member overloaded functions
Sr.No. | Method & Description |
---|---|
1 | unordered_multimap::operator==() Tests whether two unordered_multimaps are equal or not. |
2 | unordered_multimap::operator!=() Tests whether two unordered_multimaps are equal or not. |
3 | unordered_multimap::swap() Exchanges the content of first unordered_multimap with another. |