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++ 标准模板库 - <map>

map 介绍

Map 映射是一种类似于字典的数据结构。 它是(键,值)对的序列,其中只有单个值与每个唯一键相关联。 它通常被称为关联数组

在映射中,键值通常用于对元素进行排序。 对于映射数据类型的键和值可以不同,它表示为

typedef pair<const Key, T> value_type;

Maps 映射通常实现为二叉搜索树。

零大小的映射也是有效的。 在这种情况下, map.begin() 和 map.end() 指向相同的位置。


定义

下面是来自 <map> 头文件的 std::map 的定义

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class map;

参数

  • Key − key 的类型。

  • T − 映射值的类型。

  • Compare − 一个二元谓词,它接受两个元素键作为参数并返回一个布尔值。

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

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


成员类型

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

序号 成员类型 定义
1 key_type Key (First parameter of the template)
2 mapped_type T (Second parameter of the template)
3 key_compare Compare (Third parameter of the template)
4 allocator_type Alloc (Fourth parameter of the template)
5 value_type pair<const key_type,mapped_type>
6 value_compare Nested function class to compare elements
7 reference allocator_type::reference
8 const_reference allocator_type::const_reference
9 pointer allocator_type::pointer
10 const_pointer allocator_type::const_pointer
11 iterator bi-directional iterator to value_type
12 const_iterator bi-directional iterator to const value_type
13 reverse_iterator reverse iterator
14 const_reverse_iterator constant reverse iterator
15 difference_type ptrdiff_t
16 size_type size_t

<map> 中的函数

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

构造函数

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

构造一个包含零个元素的空映射。

2 map::map range constructor

构造一个包含 firstlast 范围内的元素数量的映射。

3 map::map copy constructor

使用现有映射中存在的每个元素的副本构造映射。

4 map::map move constructor

使用移动语义构造具有其他内容的映射。

5 map::map initializer list constructor

从初始化列表构造一个映射。

析构函数

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

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

成员函数

序号 方法 & 说明
1 map::at

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

2 map::begin

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

3 map::cbegin

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

4 map::cend

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

5 map::clear

通过删除所有元素来销毁映射并将映射的大小设置为零。

6 map::count

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

7 map::crbegin

返回一个常量反向迭代器,它指向容器 i 的最后一个元素。

8 map::crend

返回一个常量反向迭代器,它指向容器 i 中第一个元素之前的理论元素。

9 map::emplace

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

10 map::emplace_hint hint version

使用提示作为元素的位置在映射中插入新元素。

11 map::empty

测试 map 是否为空。

12 map::end

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

13 map::equal_range

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

14 map::erase position version

position 移除映射的单个元素。

15 map::erase position version

position 移除映射的单个元素。

16 map::erase key

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

17 map::erase range version

从映射中删除元素范围。

18 map::erase range version

从映射中删除元素范围。

19 map::find

查找与键 k 关联的元素。

20 map::get_allocator

返回与映射关联的分配器。

21 map::insert single element

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

22 map::insert hint version

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

23 map::insert range version

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

24 map::insert move hint verstion

通过插入新元素来扩展映射。

25 map::insert initializer list version

通过从初始化列表中插入新元素来扩展映射。

26 map::key_comp

返回一个比较键的函数对象,它是此容器的构造函数参数 comp 的副本。

27 map::lower_bound

返回一个迭代器,它指向不小于键 k 的第一个元素。

28 map::max_size

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

29 map::operator= copy version

通过替换旧内容为映射分配新内容,并在必要时修改大小。

30 map::operator= move version

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

31 map::operator= initializer list version

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

32 map::operator[] copy version

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

33 map::operator[] move version

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

34 map::rbegin

返回指向映射的最后一个元素的反向迭代器。

35 map::rend

返回一个反向迭代器,它指向映射 i 的反向端。

36 map::size

返回映射中存在的元素数。

37 map::swap

将 map 的内容与 map x 的内容交换。

38 map::upper_bound

返回一个迭代器,指向大于键 k 的第一个元素。

39 map::value_comp

返回一个比较 std::map::value_type 类型对象的函数对象。

非成员重载函数

序号 方法 & 说明
1 operator==

测试两个映射是否相等。

2 operator!=

测试两个映射是否相等。

3 operator<

测试第一个映射是否小于其他映射。

4 map::operator<=

测试第一个映射是否小于或等于其他映射。

5 operator>

测试第一个映射是否大于其他映射。

6 operator>=

测试第一个映射是否大于或等于其他映射。

7 swap()

将 map 的内容与 map x 的内容交换。


multimap 简介

Multimap 多重映射是类似于字典的数据结构。 它是 (key, value) 对的序列,其中多个值可以与等效键相关联。 它通常被称为关联数组

在多重映射中,键值通常用于对元素进行排序。 对于多重映射数据类型的键和值可以不同,它表示为

typedef pair<const Key, T> value_type;

Multimaps 通常实现为二叉搜索树。

零大小的多重映射也是有效的。 在这种情况下, multimap.begin() 和 multimap.end() 指向相同的位置。


定义

下面是来自 <multimap> 头文件的 std::multimap 的定义

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class multimap;

参数

  • Key − Key 的类型。

  • T − 映射值的类型。

  • Compare − 一个二元谓词,它接受两个元素键作为参数并返回一个布尔值。

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

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


成员类型

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

序号 成员类型 定义
1 key_type Key (First parameter of the template)
2 mapped_type T (Second parameter of the template)
3 key_compare Compare (Third parameter of the template)
4 allocator_type Alloc (Fourth parameter of the template)
5 value_type pair<const key_type,mapped_type>
6 value_compare Nested function class to compare elements
7 reference allocator_type::reference
8 const_reference allocator_type::const_reference
9 pointer allocator_type::pointer
10 const_pointer allocator_type::const_pointer
11 iterator bi-directional iterator to value_type
12 const_iterator bi-directional iterator to const value_type
13 reverse_iterator reverse iterator
14 const_reverse_iterator constant reverse iterator
15 difference_type ptrdiff_t
16 size_type size_t

<multimap> 中的函数

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

构造函数

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

构造一个具有零个元素的空多重映射。

2 multimap::multimap range constructor

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

3 multimap::multimap copy constructor

使用现有 multimap 中存在的每个元素的副本构造 multimap。

4 multimap::multimap move constructor

使用移动语义构造一个包含其他内容的多重映射。

5 multimap::multimap initializer list constructor

从初始化列表构造一个多重映射。

析构函数

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

通过解除分配内存来销毁多重映射对象。

成员函数

序号 方法 & 说明
1 multimap::begin

返回一个迭代器,它引用多重映射的第一个元素。

2 multimap::cbegin

返回一个常量迭代器,它引用多重映射的第一个元素。

3 multimap::cend

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

4 multimap::clear

通过删除所有元素并将多重映射的大小设置为零来销毁多重映射。

5 multimap::count

返回与键 k 关联的多重映射值的数量。

6 multimap::crbegin

返回一个常量反向迭代器,它指向容器的最后一个元素。

7 multimap::crend

返回一个常量反向迭代器,它指向容器中第一个元素之前的理论元素。

8 multimap::emplace

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

9 multimap::emplace_hint hint version

使用提示作为元素的位置在多重映射中插入新元素。

10 multimap::empty

测试 multimap 是否为空。

11 multimap::end

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

12 multimap::equal_range

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

13 multimap::erase position version

position 中移除多重映射的单个元素。

14 multimap::erase position version

position 中移除多重映射的单个元素。

15 multimap::erase key

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

16 multimap::erase range version

从多重映射中删除元素范围。

17 multimap::erase range version

从多重映射中删除元素范围。

18 multimap::find

查找与键 k 关联的元素。

19 multimap::get_allocator

返回与多重映射关联的分配器。

20 multimap::insert single element

通过在多重映射中插入新元素来扩展容器。

21 multimap::insert hint version

通过在多重映射中插入新元素来扩展容器。

22 multimap::insert range version

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

23 multimap::insert move hint verstion

通过插入新元素来扩展多重映射。

24 multimap::insert initializer list version

通过从初始值设定项列表中插入新元素来扩展多重映射。

25 multimap::key_comp

返回一个比较键的函数对象,它是此容器的构造函数参数 comp 的副本。

26 multimap::lower_bound

返回一个迭代器,它指向不小于键 k 的第一个元素。

27 multimap::max_size

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

28 multimap::operator= copy version

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

29 multimap::operator= move version

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

30 multimap::operator= initializer list version

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

31 multimap::rbegin

返回一个反向迭代器,它指向多重映射的最后一个元素。

32 multimap::rend

返回一个反向迭代器,它指向多重映射的反向端。

33 multimap::size

返回多重映射中存在的元素数量。

34 multimap::swap

用 multimap x 的内容交换 multimap 的内容。

35 multimap::upper_bound

返回一个迭代器,指向大于键 k 的第一个元素。

36 multimap::value_comp

返回比较 std::multimap::value_type 类型对象的函数对象。

非成员重载函数

序号 方法 & 说明
1 operator==

测试两个 multimap 是否相等。

2 operator!=

测试两个 multimap 是否相等。

3 operator<

测试第一个 multimap 是否小于其他。

4 multimap::operator<=

测试第一个 multimap 是否小于或等于其他。

5 operator>

测试第一个 multimap 是否大于其他。

6 operator>=

测试第一个 multimap 是否大于或等于其他。

7 swap()

用 multimap x 的内容交换 multimap 的内容。