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类型的对象的函数对象。

非成员重载函数

先生。 方法及说明
1 运算符==

测试两个多重贴图是否相等。

2 运算符!=

测试两个多重贴图是否相等。

3 运算符<

测试第一个多重贴图是否小于其他多重贴图。

4 多重映射::运算符<=

测试第一个多重贴图是否小于或等于其他多重贴图。

5 运算符>

测试第一个多重贴图是否大于其他多重贴图。

6 运算符>=

测试第一个多重贴图是否大于或等于其他多重贴图。

7 交换()

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