C ++库 - <unordered_map>

unordered_map简介

无序地图是类似于数据结构的字典.它是(键,值)对的序列,其中只有单个值与每个唯一键相关联.它通常被称为 associative array .它可以根据键来快速检索单个元素.它还实现了直接访问运算符(下标operator []),它允许使用其键值作为参数直接访问映射值.

无序映射确实不按照任何特定顺序对其元素的键值或映射值进行排序,而是根据其哈希值组织到桶中,以允许直接通过键值快速访问各个元素.

无序地图在按键访问单个元素时比地图表现更好.但是对于范围迭代,它们的性能相当低.

定义

以下是来自< 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 : 映射值的类型.

  • 哈希 : 一个一元函数对象类型,它将类型为 key 的对象作为参数,并根据它返回类型 size_t 的唯一值.

  • Pred : 二进制谓词,其中键类型的两个参数并返回一个bool.

  • Alloc ;分配器对象的类型.

  • T可以被任何其他数据类型替换,包括用户定义的类型.

成员类型

以下成员类型可以用作参数或按成员函数返回类型.

Sr.No.会员类型定义
1key_type键(模板的第一个参数)
2mapped_typeT(模板的第二个参数)
3value_typepair< const key_type,mapped_type>
4hasher第三个模板参数(默认为:hash< key_type>)
5key_equal第四个模板参数(默认为:equal_to< key_type>)
6allocator_typeAlloc(模板的第五个参数)
7referencevalue_type&
8const_referenceconst value_type&
9pointerallocator_traits< Alloc> ::指针
10const_pointerallocator_traits< Alloc> :: const_pointer
11iteratorvalue_type的前向迭代器 value_type
12const_iteratorconst value_t的前向迭代器ype value_type
13local_iteratorvalue_type的转发迭代器
14const_local_iteratorconst value_type的转发迭代器
15difference_typeptrdiff_t
16size_typesize_t

来自< unordered_map>的函数

以下是来自< unordered_map>的所有方法的列表标题.

构造函数

Sr.No.方法&说明
1unordered_map::unordered_map  默认构造函数

构造一个零元素的空unordered_map.

2unordered_map :: unordered_map  复制构造函数

构造一个unordered_map,其中包含现有unordered_map中存在的每个元素的副本.

3unordered_map :: unordered_map   move constructor

使用move语义构造带有其他内容的unordered_map.

4unordered_map :: unordered_map  范围构造函数

使用 first 范围内的元素构造一个unordered_map最后.

5unordered_map :: unordered_map   initializer_list构造函数

从初始化列表构造一个unordered_map.

析构函数

Sr.No.方法&说明
1unordered_map:::unordered_map

通过解除分配内存来销毁unordered_map对象.

成员函数

Sr.No.Method&说明
1unordered_map::at

返回与键 k 关联的映射值的引用.

2unordered_map :: begin   container iterator

返回一个迭代器,它引用地图的第一个元素.

3unordered_map :: begin   bucket iterator

返回指向其中一个存储区中第一个元素的迭代器.

4unordered_map::bucket

返回具有键 k 的元素所在的桶号.

5unordered_map :: bucket_count

返回unordered_map容器中的桶数.

6unordered_map :: bucket_size

返回n 中显示的元素数量桶.

7unordered_map :: cbegin   container iterator

返回引用第一个的常量迭代器unordered_map的元素.

8unordered_map :: cbegin   bucket iterator

返回一个指向其中一个桶中第一个元素的常量迭代器.

9unordered_map :: cend  容器迭代器

返回一个常量迭代器,它指向unordered_map的 past-the-end 元素./p>

10unordered_map :: cend   bucket iterator

返回指向 past-the-end的常量迭代器其中一个桶中的元素.

11unordered_map :: clear

通过删除所有el来销毁unordered_map并将unordered_map的大小设置为 0 .

12unordered_map :: count

返回数字与键 k 关联的映射值.

13unordered_map :: emplace

通过插入新扩展容器元素.

14unordered_map :: emplace_hint

使用提示作为元素的位置在unordered_map中插入新元素.

15unordered_map :: empty

测试时间其中unordered_map是空的.

16unordered_map :: end   container iterator

返回指向

17unordered_map :: end   bucket iterator

返回一个迭代器,它指向其中一个桶中的 past-the-end 元素.

18unordered_map :: equal

返回与特定键匹配的元素范围.

19unordered_map :: erase   position version

position 中删除unordered_map的单个元素.

20unordered_map :::erase  密钥版本

删除与密钥 k 关联的映射值.

21unordered_map :::erase   range version

从unordered_map中删除元素范围.

22unordered_map :: find

查找与键 k 相关联的元素.

23unordered_map :: get_allocator

返回与unordered_map关联的分配器.

24unordered_map :: hash_function

计算unordered_map容器使用的散列函数对象.

25unordered_map :: insert

扩展容器通过在unordered_map中插入新元素.

26unordered_map :: insert  移动版本

通过在unordered_map中插入新元素来扩展容器.

27unordered_map :: insert  提示版本

通过在unordered_map中插入新元素来扩展容器.

28unordered_map :: insert   move and hint version

通过插入新元素来扩展unordered_map.

29unordered_map: :insert   range version

通过在unordered_map中插入新元素来扩展容器.

30unordered_map :: insert   initializer_list version

通过从初始化列表中插入新元素来扩展地图.

31unordered_map :: key_eq

返回比较密钥的函数.

32unordered_map :: load_factor

返回unordered_map容器的当前加载因子.

33unordered_map :: max_bucket_count

返回unordered_map容器可以拥有的最大桶数.

34unordered_map :: max_load_factor  获取版本

ř eturns unordered_map容器的当前最大加载因子.

35unordered_map :: max_load_factor  设置版本

分配新的加载因子对于unordered_map容器.

36unordered_map :: max_size

返回unordered_map可以保存的最大元素数.

37unordered_map::operator=  复制版本

通过替换旧的内容为unordered_map分配新内容,并在必要时修改大小.

38unordered_map :: operator =  移动版本

将一个unordered_map的内容移动到另一个中,并根据需要修改大小.

39unordered_map :: operator =   initializer_list version

将元素从初始化列表复制到unordered_map.

40unordered_map :: operator []

如果key k 与容器中的元素匹配,则method返回对该元素的引用.

41UNO rdered_map :: operator []  移动版本

如果key k 匹配容器中的元素,则method返回对元素的引用.

42unordered_map :: rehash

将容器中的桶数设置为 n 或更多.

43unordered_map :: reserve

将容器中的桶数设置为最适合包含 n的桶 elements.

44unordered_map :: size

返回unordered_map中存在的元素数.

45unordered_map :: swap

将第一个unordered_map的内容与另一个交换.

非会员重载函数

Sr.No.Method&说明
1unordered_map::operator==

测试两个unordered_maps是否相等.

2unordered_map :: operator!=

测试两个unordered_maps是否相等.

3unordered_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<Key>,
           class Pred = equal_to<Key>,
           class Alloc = allocator< pair<const Key,T> >
           > class unordered_multimap;

参数

  • Key : 密钥的类型.

  • T : 映射值的类型.

  • 哈希 : 一个一元函数对象类型,它将类型为 key 的对象作为参数,并根据它返回类型 size_t 的唯一值.

  • Pred : 二进制谓词,其中键类型的两个参数并返回一个bool.

  • Alloc ;分配器对象的类型.

    T可以被任何其他数据类型替换,包括用户定义的类型.

成员类型

以下成员类型可以用作参数或按成员函数返回类型.

Sr.No.会员类型定义
1key_type键(模板的第一个参数)
2mapped_typeT(模板的第二个参数)
3value_typepair< const key_type,mapped_type>
4hasher第三个模板参数(默认为:hash< key_type>)
5key_equal第四个模板参数(默认为:equal_to< key_type>)
6allocator_typeAlloc(模板的第五个参数)
7referencevalue_type&
8const_referenceconst value_type&
9指针allocator_traits< Alloc> ::指针
10const_pointerallocator_traits< Alloc> :: const_pointer
11iteratorvalue_type的前向迭代器 value_type
12const_iteratorconst value_t的前向迭代器ype value_type
13local_iteratorvalue_type的转发迭代器
14const_local_iteratorconst value_type的转发迭代器
15difference_typeptrdiff_t
16size_typesize_t

来自< unordered_multimap>

的函数

以下是来自< unordered_map>的所有方法的列表标题.

构造函数

Sr.No.方法&说明
1unordered_multimap :: unordered_multimap() 默认构造函数

构造一个零元素的空unordered_multimap.

2unordered_multimap :: unordered_multimap() 复制构造函数

构造一个unordered_multimap,其中包含现有unordered_multimap中存在的每个元素的副本.

3unordered_multimap :: unordered_multimap() move constructor

使用move语义构造带有其他内容的unordered_multimap.

4unordered_multimap :: unordered_multimap() 范围构造函数

构造一个unordered_multimap,其元素数量在 first last 的范围内.

5unordered_multimap :: unordered_multimap() initializer_list构造函数

从初始化列表构造一个unordered_multimap.

析构函数

Sr.No.Method&说明
1unordered_multimap :: ~unordered_multimap()

通过释放它的内存来销毁unordered_multimap对象.

会员功能

$b$ b

Sr.No.方法&说明
1unordered_multimap :: begin() 容器迭代器

返回一个迭代器,它引用unordered_mulitmap的第一个元素.

2unordered_multimap :: begin() bucket iterator

返回指向其中一个存储区中第一个元素的迭代器.

3unordered_multimap :: bucket()

返回具有键 k 的元素所在的存储桶编号.

4unordered_multimap :: bucket_count()

返回unordered_multimap容器中存在的桶数.

5unordered_multimap :: bucket_size()

返回n th 桶中的元素数.

6unordered_multimap: :cbegin() 容器迭代器

返回一个常量迭代器,它引用unordered_multimap的第一个元素.

7unordered_multimap :: cbegin() bucket iterator

返回一个指向它的常量迭代器其中一个桶中的第一个元素.

8unordered_multimap :: cend() 容器迭代器

返回一个常量迭代器指向unordered_multimap的 past-the-end 元素.

9unordered_multimap :: cend() bucket iterator

返回一个常量迭代器,它指向其中一个桶中的 past-the-end 元素.

10unordered_multimap :: clear()

通过删除所有元素来销毁unordered_multimap,并将unordered_multimap的大小设置为 0 .

11unordered_multimap :: count()

返回与键 k 关联的映射值的数量.

12unordered_multimap :: \\ templace()

通过插入新元素来扩展容器.

13unordered_multimap :: emplace_hint()

使用提示作为元素的位置在unordered_multimap中插入一个新元素.

14unordered_multimap :: empty()

测试是否unordered_multimap是空的.

15unordered_multimap :: end() 容器迭代器

返回指向

16unordered_multimap :: end() bucket iterator

返回一个迭代器,它指向其中一个桶中的 past-the-end 元素.

17unordered_multimap::equal_range()

Returns range of elements that matches specific key.

18unordered_multimap::erase() position version

Removes single element of the unordered_multimap from position.

19unordered_multimap::erase() key version

Removes mapped value associated with key k.

20unordered_multimap::erase() range version

Removes range of element from the the unordered_multimap.

21unordered_multimap::find()

Finds an element associated with key k.

22unordered_multimap::get_allocator()

Returns an allocator associated with unordered_multimap.

23unordered_multimap::hash_function()

Calculates the hash function object used by the unordered_multimap container.

24unordered_multimap::insert() value version

Extends container by inserting new element in unordered_multimap.

25unordered_multimap::insert() move versio n

Extends unordered_multimap by inserting new element.

26unordered_multimap::insert() hint version

Extends container by inserting new element in unordered_multimap.

27unordered_multimap::insert() hint move version

Extends container by inserting new element in unordered_multimap by using move semantics.

28unordered_multimap::insert() range version

Extends container by inserting new elements in the unordered_multimap.

29unordered_multimap::insert() initializer_list version

Extends unordered_multimap by inserting new element from initializer list.

30unordered_multimap::key_eq()

Returns the function that compares keys for equality.

31unordered_multimap::load_factor()

Returns the current load factor of the unordered_multimap container.

32unordered_multimap::max_bucket_count()

Returns the maximum number of buckets that the unordered_multimap container can have.

33unordered_multimap::max_load_factor() get version

Returns the current maximum load factor for the unordered_multimap container.

34unordered_multimap::max_load_factor() set version

Assigns new load factor for the unordered_multimap container.

35unordered_multimap::max_size()

Returns the maximum number of elements can be held by unordered_multimap.

36unordered_multimap::operator=() copy version

Assigns new contents to the unordered_multimap by replacing old ones and modifies size if necessary.

37unordered_multimap::operator=() move version

Move the contents of one unordered_multimap into another and modifies size if necessary.

38unordered_multimap::operator=() initializer_list version

Copy elements from initializer list to unordered_multimap.

39unordered_multimap::rehash()

Sets the number of buckets in the container to n or more.

40unordered_multimap::reserve()

Sets the number of buckets in the container to the most appropriate to contain at least n elements.

41unordered_multimap::size()

Returns the number of elements present in the unordered_multimap.

42unordered_multimap::swap()

Exchanges the content of first unordered_multima p with another.

Non-member overloaded functions

Sr.No.Method & Description
1unordered_multimap::operator==()

Tests whether two unordered_multimaps are equal or not.

2unordered_multimap::operator!=()

Tests whether two unordered_multimaps are equal or not.

3unordered_multimap::swap()

Exchanges the content of first unordered_multimap with another.