C++ 库 - <map>



map 简介

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

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

typedef pair<const Key, T> value_type;

Map 通常以二叉搜索树的形式实现。

零大小的 map 也是有效的。在这种情况下,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 - 映射值的类型。

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

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

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

成员类型

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

序号 成员类型 定义
1 key_type Key(模板的第一个参数)
2 mapped_type T(模板的第二个参数)
3 key_compare Compare(模板的第三个参数)
4 allocator_type Alloc(模板的第四个参数)
5 value_type pair<const key_type,mapped_type>
6 value_compare 嵌套函数类,用于比较元素
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 双向迭代器到value_type
12 const_iterator 双向迭代器到常量value_type
13 reverse_iterator 反向迭代器
14 const_reverse_iterator 常量反向迭代器
15 difference_type ptrdiff_t
16 size_type size_t

来自 <map> 的函数

以下是来自 <map> 头文件的所有方法列表。

构造函数

序号 方法 & 描述
1 map::map 默认构造函数

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

2 map::map 范围构造函数

构造一个 map,其元素数量与firstlast.

3 map::map 复制构造函数

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

4 map::map 移动构造函数

使用移动语义构造一个包含其他内容的 map。

5 map::map 初始化列表构造函数

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

析构函数

序号 方法 & 描述
1 map::~map

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

成员函数

序号 方法 & 描述
1 map::at

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

2 map::begin

返回一个迭代器,该迭代器引用 map 的第一个元素。

3 map::cbegin

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

4 map::cend

返回一个指向超出末尾map 的元素。

5 map::clear

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

6 map::count

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

7 map::crbegin

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

8 map::crend

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

9 map::emplace

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

10 map::emplace_hint 提示版本

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

11 map::empty

测试 map 是否为空。

12 map::end

返回一个指向超出末尾map 中的元素。

13 map::equal_range

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

14 map::erase 位置版本

position.

15 map::erase 位置版本

position.

16 map::erase key

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

17 map::erase 范围版本

从 map 中删除元素范围。

18 map::erase 范围版本

从 map 中删除元素范围。

19 map::find

查找与键关联的元素k.

20 map::get_allocator

返回与 map 关联的分配器。

21 map::insert 单个元素

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

22 map::insert 提示版本

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

23 map::insert 范围版本

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

24 map::insert 移动提示版本

通过插入新元素扩展 map。

25 map::insert 初始化列表版本

从初始化列表扩展 map,插入新元素。

26 map::key_comp

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

27 map::lower_bound

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

28 map::max_size

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

29 map::operator= 复制版本

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

30 map::operator= 移动版本

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

31 map::operator= 初始化列表版本

将初始化列表中的元素复制到 map 中。

32 map::operator[] 复制版本

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

33 map::operator[] 移动版本

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

34 map::rbegin

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

35 map::rend

返回一个指向 map 的反向末尾的反向迭代器 i。

36 map::size

返回 map 中存在的元素数。

37 map::swap

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

38 map::upper_bound

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

39 map::value_comp

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

非成员重载函数

序号 方法 & 描述
1 operator==

测试两个 map 是否相等。

2 operator!=

测试两个 map 是否相等。

3 operator<

测试第一个 map 是否小于另一个 map。

4 map::operator<=

测试第一个 map 是否小于或等于另一个 map。

5 operator>

测试第一个 map 是否大于另一个 map。

6 operator>=

测试第一个 map 是否大于或等于另一个 map。

7 swap()

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

multimap 简介

Multimap 是一种类似字典的数据结构。它是一系列(键, 值)对,其中多个值可以与等效键关联。它通常被称为关联数组.

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

typedef pair<const Key, T> value_type;

Multimap 通常以二叉搜索树的形式实现。

零大小的 multimap 也是有效的。在这种情况下,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 - 映射值的类型。

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

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

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

成员类型

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

序号 成员类型 定义
1 key_type Key(模板的第一个参数)
2 mapped_type T(模板的第二个参数)
3 key_compare Compare(模板的第三个参数)
4 allocator_type Alloc(模板的第四个参数)
5 value_type pair<const key_type,mapped_type>
6 value_compare 嵌套函数类,用于比较元素
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 双向迭代器到value_type
12 const_iterator 双向迭代器到常量value_type
13 reverse_iterator 反向迭代器
14 const_reverse_iterator 常量反向迭代器
15 difference_type ptrdiff_t
16 size_type size_t

来自 <multimap> 的函数

以下是来自 <multimap> 头文件的所有方法列表。

构造函数

序号 方法 & 描述
1 multimap::multimap 默认构造函数

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

2 multimap::multimap 范围构造函数

构造一个 multimap,其元素数量与firstlast.

3 multimap::multimap 复制构造函数

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

4 multimap::multimap 移动构造函数

使用移动语义构造一个包含其他内容的 multimap。

5 multimap::multimap 初始化列表构造函数

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

析构函数

序号 方法 & 描述
1 multimap::~multimap

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

成员函数

序号 方法 & 描述
1 multimap::begin

返回一个迭代器,该迭代器引用 multimap 的第一个元素。

2 multimap::cbegin

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

3 multimap::cend

返回一个指向超出末尾multimap 的元素。

4 multimap::clear

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

5 multimap::count

返回与键关联的 multimapped 值的个数k.

6 multimap::crbegin

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

7 multimap::crend

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

8 multimap::emplace

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

9 multimap::emplace_hint 提示版本

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

10 multimap::empty

测试多重映射是否为空。

11 multimap::end

返回一个指向超出末尾多重映射中的元素。

12 multimap::equal_range

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

13 multimap::erase 位置版本

从多重映射中删除单个元素。position.

14 multimap::erase 位置版本

从多重映射中删除单个元素。position.

15 multimap::erase key

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

16 multimap::erase 范围版本

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

17 multimap::erase 范围版本

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

18 multimap::find

查找与键关联的元素k.

19 multimap::get_allocator

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

20 multimap::insert 单个元素

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

21 multimap::insert 提示版本

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

22 multimap::insert 范围版本

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

23 multimap::insert 移动提示版本

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

24 multimap::insert 初始化列表版本

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

25 multimap::key_comp

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

26 multimap::lower_bound

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

27 multimap::max_size

返回多重映射可以容纳的最大元素数。

28 multimap::operator= 复制版本

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

29 multimap::operator= 移动版本

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

30 multimap::operator= 初始化列表版本

将初始化列表中的元素复制到多重映射中。

31 multimap::rbegin

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

32 multimap::rend

返回一个反向迭代器,该迭代器指向多重映射的反向末尾。

33 multimap::size

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

34 multimap::swap

交换多重映射的内容与多重映射x的内容。

35 multimap::upper_bound

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

36 multimap::value_comp

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

非成员重载函数

序号 方法 & 描述
1 operator==

测试两个多重映射是否相等。

2 operator!=

测试两个多重映射是否相等。

3 operator<

测试第一个多重映射是否小于另一个。

4 multimap::operator<=

测试第一个多重映射是否小于或等于另一个。

5 operator>

测试第一个多重映射是否大于另一个。

6 operator>=

测试第一个多重映射是否大于或等于另一个。

7 swap()

交换多重映射的内容与多重映射x的内容。

广告