C++ 教程

C++ 教程 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学运算 C++ 布尔值 C++ 条件语句 C++ Switch 语句 C++ While 循环 C++ For 循环 C++ Break/Continue 语句 C++ 数组 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载

C++ 面向对象

C++ OOP C++ 类和对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态

C++ 高级教程

C++ 文件 C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 正则表达式

C++ 如何使用

C++ 两个数字相加

C++ 标准库参考

C++ 标准库 - 简介 C++ 标准库 - <fstream> C++ 标准库 - <iomanip> C++ 标准库 - <ios> C++ 标准库 - <iosfwd> C++ 标准库 - <iostream> C++ 标准库 - <istream> C++ 标准库 - <ostream> C++ 标准库 - <sstream> C++ 标准库 - <streambuf> C++ 标准库 - <atomic> C++ 标准库 - <complex> C++ 标准库 - <exception> C++ 标准库 - <functional> C++ 标准库 - <limits> C++ 标准库 - <locale> C++ 标准库 - <memory> C++ 标准库 - <new> C++ 标准库 - <numeric> C++ 标准库 - <regex> C++ 标准库 - <stdexcept> C++ 标准库 - <string> C++ 标准库 - <thread> C++ 标准库 - <tuple> C++ 标准库 - <typeinfo> C++ 标准库 - <utility> C++ 标准库 - <valarray>

C++ 模板库参考

C++ STL 库 - <array> C++ STL 库 - <bitset> C++ STL 库 - <deque> C++ STL 库 - <forward_list> C++ STL 库 - <list> C++ STL 库 - <map> C++ STL 库 - <queue> C++ STL 库 - <set> C++ STL 库 - <stack> C++ STL 库 - <unordered_map> C++ STL 库 - <unordered_set> C++ STL 库 - <vector> C++ STL 库 - <algorithm> C++ STL 库 - <iterator>

C++ 实例

C++ 实例 C++ 练习 C++ 测验



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 − Key 的类型。

  • T − 映射值的类型。

  • Hash − 一元函数对象类型,它以 key 类型的对象作为参数并基于它返回 size_t 类型的唯一值。

  • Predkey type的两个参数并返回布尔值的二进制谓词。

  • Alloc − 分配器对象的类型。

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


成员类型

以下成员类型可以用作成员函数的参数或返回类型。

序号 成员类型 定义
1 key_type Key (First parameter of the template)
2 mapped_type T (Second parameter of the template)
3 value_type pair<const key_type,mapped_type>
4 hasher The third template parameter (defaults to: hash<key_type>)
5 key_equal The fourth template parameter (defaults to: equal_to<key_type>)
6 allocator_type Alloc (Fifth parameter of the template)
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 A forward iterator to value_type value_type
12 const_iterator A forward iterator to const value_type value_type
13 local_iterator A forward iterator to value_type
14 const_local_iterator A forward iterator to const value_type
15 difference_type ptrdiff_t
16 size_type size_t

<unordered_map> 中的函数

下面是来自 <unordered_map> 标头的所有方法的列表。

构造函数

序号 方法 & 说明
1 unordered_map::unordered_map default constructor

构造一个具有零个元素的空 unordered_map。

2 unordered_map::unordered_map copy constructor

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

3 unordered_map::unordered_map move constructor

使用移动语义构造具有 other 内容的 unordered_map。

4 unordered_map::unordered_map range constructor

构造一个具有与 firstlast 范围内的元素一样多的元素的 unordered_map。

5 unordered_map::unordered_map initializer_list constructor

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

析构函数

序号 方法 & 说明
1 unordered_map::~unordered_map

通过释放内存来销毁 unordered_map 对象。

成员函数

序号 方法 & 说明
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

返回第 nth 桶中存在的元素数。

7 unordered_map::cbegin container iterator

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

8 unordered_map::cbegin bucket iterator

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

9 unordered_map::cend container iterator

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

10 unordered_map::cend bucket iterator

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

11 unordered_map::clear

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

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

返回一个迭代器,它指向 unordered_map 中的 past-the-end 元素。

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 key version

删除与键 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 move version

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

27 unordered_map::insert hint version

通过在 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 get version

返回 unordered_map 容器的当前最大负载因子。

35 unordered_map::max_load_factor set version

为 unordered_map 容器分配新的负载因子。

36 unordered_map::max_size

返回 unordered_map 可以容纳的最大元素数。

37 unordered_map::operator= copy version

通过替换旧内容并将新内容分配给 unordered_map,并在必要时修改大小。

38 unordered_map::operator= move version

将一个 unordered_map 的内容移动到另一个中,并在必要时修改大小。

39 unordered_map::operator= initializer_list version

将初始值设定项列表中的元素复制到 unordered_map。

40 unordered_map::operator[]

如果键 k 匹配容器中的元素,则方法返回对该元素的引用。

41 unordered_map::operator[] move version

如果键 k 匹配容器中的元素,则方法返回对该元素的引用。

42 unordered_map::rehash

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

43 unordered_map::reserve

将容器中的桶数设置为最适合包含至少 n 个元素。

44 unordered_map::size

返回 unordered_map 中存在的元素数。

45 unordered_map::swap

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

非成员重载函数

序号 方法 & 说明
1 unordered_map::operator==

测试两个 unordered_map 是否相等。

2 unordered_map::operator!=

测试两个 unordered_map 是否相等。

3 unordered_map::swap

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


unordered_multimap 简介

Unordered_multimap 是类似字典的数据结构。 它是(key, value)键值对的序列,其中不同的元素可以具有等效的键。 具有等效键的元素在同一个桶中组合在一起,并且 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 − key 的类型。

  • T − 映射值的类型。

  • Hash − 一元函数对象类型,它以 key 类型的对象作为参数并基于它返回 size_t 类型的唯一值。

  • Predkey type的两个参数并返回布尔值的二进制谓词。

  • Alloc − 分配器对象的类型。

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


成员类型

以下成员类型可以用作成员函数的参数或返回类型。

序号 成员类型 定义
1 key_type Key (First parameter of the template)
2 mapped_type T (Second parameter of the template)
3 value_type pair<const key_type,mapped_type>
4 hasher The third template parameter (defaults to: hash<key_type>)
5 key_equal The fourth template parameter (defaults to: equal_to<key_type>)
6 allocator_type Alloc (Fifth parameter of the template)
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 A forward iterator to value_type value_type
12 const_iterator A forward iterator to const value_type value_type
13 local_iterator A forward iterator to value_type
14 const_local_iterator A forward iterator to const value_type
15 difference_type ptrdiff_t
16 size_type size_t

<unordered_multimap> 中的函数

下面是来自 <unordered_map> 标头的所有方法的列表。

构造函数

序号 方法 & 说明
1 unordered_multimap::unordered_multimap() default constructor

构造一个具有零个元素的空 unordered_multimap。

2 unordered_multimap::unordered_multimap() copy constructor

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

3 unordered_multimap::unordered_multimap() move constructor

使用移动语义构造具有 other 内容的 unordered_multimap。

4 unordered_multimap::unordered_multimap() range constructor

构造一个 unordered_multimap,其元素数量在 firstlast 的范围内。

5 unordered_multimap::unordered_multimap() initializer_list constructor

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

析构函数

序号 方法 & 说明
1 unordered_multimap::~unordered_multimap()

通过释放内存来销毁 unordered_multimap 对象。

成员函数

序号 方法 & 说明
1 unordered_multimap::begin() container iterator

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

2 unordered_multimap::begin() bucket iterator

返回一个迭代器,指向它的一个桶中的第一个元素。

3 unordered_multimap::bucket()

返回带有 k 键的元素所在的桶号。

4 unordered_multimap::bucket_count()

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

5 unordered_multimap::bucket_size()

返回第 nth 桶中存在的元素数。

6 unordered_multimap::cbegin() container iterator

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

7 unordered_multimap::cbegin() bucket iterator

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

8 unordered_multimap::cend() container iterator

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

9 unordered_multimap::cend() bucket iterator

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

10 unordered_multimap::clear()

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

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() container iterator

返回一个迭代器,它指向 unordered_multimap 中的 past-the-end 元素。

16 unordered_multimap::end() bucket iterator

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

17 unordered_multimap::equal_range()

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

18 unordered_multimap::erase() position version

position 移除 unordered_multimap 的单个元素。

19 unordered_multimap::erase() key version

删除与键 k 关联的映射值。

20 unordered_multimap::erase() range version

从 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() value version

通过在 unordered_multimap 中插入新元素来扩展容器。

25 unordered_multimap::insert() move version

通过插入新元素来扩展 unordered_multimap。

26 unordered_multimap::insert() hint version

通过在 unordered_multimap 中插入新元素来扩展容器。

27 unordered_multimap::insert() hint move version

通过使用移动语义在 unordered_multimap 中插入新元素来扩展容器。

28 unordered_multimap::insert() range version

通过在 unordered_multimap 中插入新元素来扩展容器。

29 unordered_multimap::insert() initializer_list version

通过从初始化列表中插入新元素来扩展 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() get version

返回 unordered_multimap 容器的当前最大负载因子。

34 unordered_multimap::max_load_factor() set version

为 unordered_multimap 容器分配新的负载因子。

35 unordered_multimap::max_size()

返回 unordered_multimap 可以容纳的最大元素数。

36 unordered_multimap::operator=() copy version

通过替换旧内容并将新内容分配给 unordered_multimap 并在必要时修改大小。

37 unordered_multimap::operator=() move version

将一个 unordered_multimap 的内容移动到另一个中,并在必要时修改大小。

38 unordered_multimap::operator=() initializer_list version

将初始值设定项列表中的元素复制到 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 的内容与另一个交换。