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
构造一个包含 first 到 last 范围内的元素数量的映射。 |
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 构造一个具有与 first 到 last 范围内的元素一样多的元素的多重映射。 |
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 的内容。 |