- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 主页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <原子>
- C++ 库 - <复杂>
- C++ 库 - <异常>
- C++ 库 - <功能>
- C++ 库 - <限制>
- C++ 库 - <语言环境>
- C++ 库 - <内存>
- C++ 库 - <新>
- C++ 库 - <数字>
- C++ 库 - <正则表达式>
- C++ 库 - <stdexcept>
- C++ 库 - <字符串>
- C++ 库 - <线程>
- C++ 库 - <元组>
- C++ 库 - <类型信息>
- C++ 库 - <实用程序>
- C++ 库 - <valarray>
C++ 库 - <地图>
地图介绍
Map是类似字典的数据结构。它是一个(键,值)对序列,其中每个唯一键仅与单个值相关联。它通常被称为关联数组。
在映射中,键值通常用于对元素进行排序。对于映射数据类型,键和值可以不同,表示为
typedef pair<const Key, T> value_type;
映射通常以二叉搜索树的形式实现。
零尺寸的地图也是有效的。在这种情况下,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 - 密钥的类型。
T - 映射值的类型。
比较- 一个二元谓词,将两个元素键作为参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 密钥类型 | Key(模板的第一个参数) |
2 | 映射类型 | T(模板的第二个参数) |
3 | 关键比较 | 比较(模板的第三个参数) |
4 | 分配器类型 | Alloc(模板的第四个参数) |
5 | 值类型 | 对<const key_type,mapped_type> |
6 | 值比较 | 用于比较元素的嵌套函数类 |
7 | 参考 | 分配器类型::引用 |
8 | 常量引用 | 分配器类型::const_reference |
9 | 指针 | 分配器_类型::指针 |
10 | 常量指针 | 分配器类型::常量指针 |
11 | 迭代器 | value_type的双向迭代器 |
12 | 常量迭代器 | const value_type的双向迭代器 |
13 | 反向迭代器 | 反向迭代器 |
14 | 常量反向迭代器 | 常数反向迭代器 |
15 | 差异类型 | ptrdiff_t |
16 | 尺码类型 | 尺寸_t |
<map> 中的函数
下面是 <map> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | map::map 默认构造函数
构造一个具有零个元素的空映射。 |
2 | map::map 范围构造函数
构造一个包含与第一个到最后一个范围内尽可能多的元素的映射。 |
3 | map::map 复制构造函数
使用现有地图中存在的每个元素的副本构造地图。 |
4 | map::map 移动构造函数
使用移动语义构造具有其他内容的地图。 |
5 | map::map 初始值设定项列表构造函数 从初始化列表构造一个映射。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | 地图::~地图
通过释放内存来销毁地图对象。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | 地图::在
返回对与键k关联的映射值的引用。 |
2 | 地图::开始
返回一个引用映射的第一个元素的迭代器。 |
3 | 地图::cbegin
返回一个常量迭代器,它引用映射的第一个元素。 |
4 | 地图::cend
返回一个常量迭代器,它指向映射的末尾元素。 |
5 | 地图::清晰
通过删除所有元素来销毁地图并将地图大小设置为零。 |
6 | 地图::计数
返回与键k关联的映射值的数量。 |
7 | 地图::crbegin
返回一个常量反向迭代器,它指向容器 i 的最后一个元素。 |
8 | 地图::crend
返回一个常量反向迭代器,它指向容器 i 中第一个元素之前的理论元素。 |
9 | 地图::安放
通过插入新元素来扩展容器。 |
10 | map::emplace_hint 提示版本 使用提示作为元素位置在映射中插入新元素。 |
11 | 地图::空
测试地图是否为空。 |
12 | 地图::结束
返回一个指向映射中末尾元素的迭代器。 |
13 | 地图::相等范围
返回与特定键匹配的元素范围。 |
14 | 地图::擦除 位置版本 从位置移除地图的单个元素。 |
15 | 地图::擦除 位置版本 从位置移除地图的单个元素。 |
16 | 地图::擦除 键 删除与键k关联的映射值。 |
17 号 | 地图::擦除 范围版本 从地图中删除元素范围。 |
18 | 地图::擦除 范围版本 从地图中删除元素范围。 |
19 | 地图::查找
查找与键k关联的元素。 |
20 | 地图::获取分配器
返回与映射关联的分配器。 |
21 | map::插入 单个元素 通过在映射中插入新元素来扩展容器。 |
22 | 地图::插入 提示版本 通过在映射中插入新元素来扩展容器。 |
23 | 地图::插入 范围版本 通过在地图中插入新元素来扩展容器。 |
24 | 地图::插入 移动提示版本 通过插入新元素来扩展映射。 |
25 | map::插入 初始化列表版本 通过从初始值设定项列表插入新元素来扩展映射。 |
26 | 地图::key_comp
返回一个比较键的函数对象,它是此容器的构造函数参数comp的副本。 |
27 | 地图::下界
返回一个迭代器,指向第一个不小于键k 的元素。 |
28 | 地图::最大尺寸
返回映射可以容纳的最大元素数。 |
29 | 地图::运算符= 复制版本 通过替换旧内容来将新内容分配给地图,并在必要时修改大小。 |
30 | map::operator= 移动版本 将一张地图的内容移动到另一张地图中,并根据需要修改大小。 |
31 | map::operator= 初始化列表版本 将元素从初始值设定项列表复制到映射。 |
32 | map::operator[] 复制版本 如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
33 | map::operator[] 移动版本 如果键k与容器中的元素匹配,则方法返回对该元素的引用。 |
34 | 地图::r开始
返回一个反向迭代器,它指向映射的最后一个元素。 |
35 | 地图::撕裂
返回一个反向迭代器,它指向映射 i 的反向端。 |
36 | 地图::大小
返回地图中存在的元素数量。 |
37 | 地图::交换
将map 的内容与map x 的内容交换。 |
38 | 地图::上限
返回一个指向第一个大于键k 的元素的迭代器。 |
39 | 地图::value_comp
返回一个比较std::map::value_type类型的对象的函数对象。 |
非成员重载函数
先生。 | 方法及说明 |
---|---|
1 | 运算符==
测试两个映射是否相等。 |
2 | 运算符!= 测试两个映射是否相等。 |
3 | 运算符< 测试第一个地图是否小于其他地图。 |
4 | 地图::运算符<= 测试第一个地图是否小于或等于其他地图。 |
5 | 运算符>
测试第一个地图是否大于其他地图。 |
6 | 运算符>=
测试第一个地图是否大于或等于其他地图。 |
7 | 交换()
将map 的内容与map x 的内容交换。 |
多图简介
Multimap 是类似字典的数据结构。它是一个(键,值)对序列,其中多个值可以与等效键关联。它通常被称为关联数组。
在多重映射中,键值通常用于对元素进行排序。对于多重映射,键和值的数据类型可以不同,表示为
typedef pair<const Key, T> value_type;
多重映射通常被实现为二叉搜索树。
零大小的多重贴图也是有效的。在这种情况下,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 - 密钥的类型。
T - 映射值的类型。
比较- 一个二元谓词,将两个元素键作为参数并返回一个布尔值。
Alloc - 分配器对象的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 密钥类型 | Key(模板的第一个参数) |
2 | 映射类型 | T(模板的第二个参数) |
3 | 关键比较 | 比较(模板的第三个参数) |
4 | 分配器类型 | Alloc(模板的第四个参数) |
5 | 值类型 | 对<const key_type,mapped_type> |
6 | 值比较 | 用于比较元素的嵌套函数类 |
7 | 参考 | 分配器类型::引用 |
8 | 常量引用 | 分配器类型::const_reference |
9 | 指针 | 分配器_类型::指针 |
10 | 常量指针 | 分配器类型::常量指针 |
11 | 迭代器 | value_type的双向迭代器 |
12 | 常量迭代器 | const value_type的双向迭代器 |
13 | 反向迭代器 | 反向迭代器 |
14 | 常量反向迭代器 | 常数反向迭代器 |
15 | 差异类型 | ptrdiff_t |
16 | 尺码类型 | 尺寸_t |
来自 <multimap> 的函数
下面是 <multimap> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | multimap::multimap 默认构造函数 构造一个具有零个元素的空多重映射。 |
2 | multimap::multimap 范围构造函数 构造一个多重映射,其元素数量与第一个到最后一个范围内的元素数量相同。 |
3 | multimap::multimap 复制构造函数 使用现有多重映射中存在的每个元素的副本构造多重映射。 |
4 | multimap::multimap 移动构造函数 使用移动语义使用其他内容构造多重映射。 |
5 | multimap::multimap 初始值设定项列表构造函数 从初始化列表构造多重映射。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | 多重映射::~多重映射
通过释放内存来销毁多重映射对象。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | 多重映射::开始
返回一个引用多重映射的第一个元素的迭代器。 |
2 | 多重映射::cbegin
返回一个常量迭代器,它引用多重映射的第一个元素。 |
3 | 多重映射::cend
返回一个常量迭代器,它指向多重映射的末尾元素。 |
4 | 多图::清除
通过删除所有元素来销毁多重映射并将多重映射的大小设置为零。 |
5 | 多重映射::计数
返回与键k关联的多重映射值的数量。 |
6 | 多重映射::crbegin
返回一个常量反向迭代器,它指向容器的最后一个元素。 |
7 | 多重映射::crend
返回一个常量反向迭代器,该迭代器指向容器中第一个元素之前的理论元素。 |
8 | 多重地图::安放
通过插入新元素来扩展容器。 |
9 | multimap::emplace_hint 提示版本 使用提示作为元素位置在多重映射中插入新元素。 |
10 | 多重映射::空
测试多重映射是否为空。 |
11 | 多重映射::结束
返回一个迭代器,该迭代器指向多重映射中的末尾元素。 |
12 | 多重映射::equal_range
返回与特定键匹配的元素范围。 |
13 | multimap::擦除 位置版本 从位置移除多重映射的单个元素。 |
14 | multimap::擦除 位置版本 从位置移除多重映射的单个元素。 |
15 | 多重映射::擦除 键
删除与键k关联的映射值。 |
16 | multimap::擦除 范围版本
从多重映射中删除元素范围。 |
17 号 | multimap::擦除 范围版本 从多重映射中删除元素范围。 |
18 | 多重映射::查找
查找与键k关联的元素。 |
19 | 多重映射::get_allocator
返回与多重映射关联的分配器。 |
20 | multimap::插入 单个元素 通过在多重映射中插入新元素来扩展容器。 |
21 | multimap::插入 提示版本 通过在多重映射中插入新元素来扩展容器。 |
22 | multimap::插入 范围版本
通过在多重映射中插入新元素来扩展容器。 |
23 | multimap::插入 移动提示版本 通过插入新元素来扩展多重映射。 |
24 | multimap::插入 初始化列表版本
通过从初始值设定项列表插入新元素来扩展 multimap。 |
25 | 多重映射::key_comp
返回一个比较键的函数对象,它是此容器的构造函数参数comp的副本。 |
26 | 多重映射::lower_bound
返回一个迭代器,指向第一个不小于键k 的元素。 |
27 | 多重映射::最大大小
返回 multimap 可以容纳的最大元素数。 |
28 | multimap::operator= 复制版本 通过替换旧内容将新内容分配给多重贴图,并根据需要修改大小。 |
29 | multimap::operator= 移动版本 将一个多重贴图的内容移至另一多重贴图,并根据需要修改大小。 |
30 | multimap::operator= 初始化列表版本 将元素从初始值设定项列表复制到多重映射。 |
31 | 多重映射::rbegin
返回指向多重映射的最后一个元素的反向迭代器。 |
32 | 多重贴图::撕裂
返回一个反向迭代器,该迭代器指向多重映射的反向端。 |
33 | 多重贴图::大小
返回多重映射中存在的元素数。 |
34 | 多重映射::交换
将 multimap 的内容与 multimap x 的内容交换。 |
35 | 多重映射::upper_bound
返回一个指向第一个大于键k 的元素的迭代器。 |
36 | 多重映射::value_comp
返回一个比较std::multimap::value_type类型的对象的函数对象。 |