C++ Library - <map>
地图介绍
地图是数据结构的字典。 它是(键,值)对的序列,其中只有单个值与每个唯一键相关联。 它通常被称为关联数组 。
在map键值中通常用于对元素进行排序。 对于地图数据类型的键和值可以不同,它表示为
typedef pair<const Key, T> value_type;
地图通常实现为二进制搜索树。
零大小的地图也是有效的。 在这种情况下,map.begin()和map.end()指向同一位置。
定义 (Definition)
下面是
template < class Key,
class T,
class Compare = less<Key>,
class Alloc = allocator<pair<const Key,T> >
> class map;
参数 (Parameters)
Key - Key类型。
T - 映射值的类型。
Compare - 一个二元谓词,它将两个元素键作为参数并返回一个bool。
Alloc - 分配器对象的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | key_compare | 比较(模板的第三个参数) |
4 | allocator_type | Alloc(模板的第四个参数) |
5 | value_type | pair |
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 | const value_type的双向迭代器 |
13 | reverse_iterator | 反向迭代器 |
14 | const_reverse_iterator | 恒定反向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自
下面是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | map::map 默认构造函数 构造一个零元素的空映射。 |
2 | map::map 范围构造函数 构造一个包含从第一个到最后一个范围内的元素的映射。 |
3 | map::map copy构造函数 构造一个包含现有地图中每个元素副本的地图。 |
4 | map::map move构造函数 使用移动语义构造包含其他内容的映射。 |
5 | map::map 初始化列表构造函数 从初始化列表构造一个映射。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | map::~map 通过释放它的内存来销毁地图对象。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
1 | map::at 返回对与键k关联的映射值的引用。 |
2 | map::begin 返回一个迭代器,它引用地图的第一个元素。 |
3 | map::cbegin 返回一个常量迭代器,它引用映射的第一个元素。 |
4 | map::cend 返回一个指向map的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 提示版本 使用提示作为元素的位置在地图中插入新元素。 |
11 | map::empty 测试地图是否为空。 |
12 | map::end 返回一个迭代器,它指向map中的past-the-end元素。 |
13 | map::equal_range 返回与特定键匹配的元素范围。 |
14 | map::erase 位置版本 从位置移除地图的单个元素。 |
15 | map::erase 位置版本 从位置移除地图的单个元素。 |
16 | map::erase 键 删除与键k关联的映射值。 |
17 | map::erase 范围版本 从地图中删除元素范围。 |
18 | map::erase 范围版本 从地图中删除元素范围。 |
19 | map::find 查找与键k关联的元素。 |
20 | map::get_allocator 返回与map关联的分配器。 |
21 | map::insert 单个元素 通过在地图中插入新元素来扩展容器。 |
22 | map::insert 提示版本 通过在地图中插入新元素来扩展容器。 |
23 | map::insert 范围版本 通过在地图中插入新元素来扩展容器。 |
24 | map::insert move hint verstion 通过插入新元素来扩展地图。 |
25 | map::insert 初始化列表版本 通过从初始化列表中插入新元素来扩展映射。 |
26 | map::key_comp 返回一个比较键的函数对象,它是此容器的构造函数参数comp的副本。 |
27 | map::lower_bound 返回指向第一个元素的迭代器,该元素不小于键k 。 |
28 | map::max_size 返回map可以保存的最大元素数。 |
29 | map::operator= copy version 通过替换旧内容将新内容分配给地图,并在必要时修改大小。 |
30 | map::operator= 移动版本 将一个地图的内容移动到另一个地图,并根据需要修改大小。 |
31 | map::operator= 初始化列表版本 将元素从初始化列表复制到映射。 |
32 | map::operator[] 复制版 如果键k与容器中的元素匹配,则method返回对该元素的引用。 |
33 | map::operator[] 移动版本 如果键k与容器中的元素匹配,则method返回对该元素的引用。 |
34 | map::rbegin 返回一个反向迭代器,它指向地图的最后一个元素。 |
35 | map::rend 返回一个反向迭代器,它指向map i的反向末尾。 |
36 | map::size 返回地图中存在的元素数。 |
37 | map::swap 用地图x的内容交换地图的内容。 |
38 | map::upper_bound 返回指向第一个元素的迭代器,该元素大于键k 。 |
39 | map::value_comp 返回一个函数对象,用于比较std :: map :: value_type类型的对象。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | operator== 测试两个地图是否相等。 |
2 | operator!= 测试两个地图是否相等。 |
3 | operator< 测试第一张地图是否小于其他地图。 |
4 | map::operator<= 测试第一张图是否小于或等于其他图。 |
5 | operator> 测试第一张地图是否大于其他地图。 |
6 | operator>= 测试第一张图是否大于或等于其他图。 |
7 | swap() 用地图x的内容交换地图的内容。 |
多图介绍
Multimap是类似数据结构的字典。 它是(键,值)对的序列,其中多个值可以与等效键相关联。 它通常被称为关联数组 。
在通常用于对元素进行排序的multimap键值中。 对于多图数据类型的键和值可以不同,它表示为
typedef pair<const Key, T> value_type;
Multimaps通常实现为二进制搜索树。
零大小的多重映射也是有效的。 在这种情况下,multimap.begin()和multimap.end()指向同一位置。
定义 (Definition)
下面是
template < class Key,
class T,
class Compare = less<Key>,
class Alloc = allocator<pair<const Key,T> >
> class multimap;
参数 (Parameters)
Key - Key类型。
T - 映射值的类型。
Compare - 一个二元谓词,它将两个元素键作为参数并返回一个bool。
Alloc - 分配器对象的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | key_type | 键(模板的第一个参数) |
2 | mapped_type | T(模板的第二个参数) |
3 | key_compare | 比较(模板的第三个参数) |
4 | allocator_type | Alloc(模板的第四个参数) |
5 | value_type | pair |
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 | const value_type的双向迭代器 |
13 | reverse_iterator | 反向迭代器 |
14 | const_reverse_iterator | 恒定反向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
来自的函数
以下是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | multimap::multimap 默认构造函数 构造一个零元素的空多图。 |
2 | multimap::multimap 范围构造函数 构造一个多图表,其中包含从头到尾范围内的元素。 |
3 | multimap::multimap 复制构造函数 构造一个多图,其中包含现有多图中存在的每个元素的副本。 |
4 | multimap::multimap move构造函数 使用移动语义构造具有其他内容的多图。 |
5 | multimap::multimap 初始化列表构造函数 从初始化列表构造多图。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | multimap::~multimap 通过释放它的内存来销毁多图对象。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
1 | multimap::begin 返回一个迭代器,它引用multimap的第一个元素。 |
2 | multimap::cbegin 返回一个常量迭代器,它引用multimap的第一个元素。 |
3 | multimap::cend 返回一个常量迭代器,它指向multimap的past-the-end元素。 |
4 | multimap::clear 通过删除所有元素并将多图的大小设置为零来销毁多图。 |
5 | multimap::count 返回与键k关联的多映射值的数量。 |
6 | multimap::crbegin 返回一个指向容器最后一个元素的常量反向迭代器。 |
7 | multimap::crend 返回一个常量反向迭代器,它指向容器中第一个元素之前的理论元素。 |
8 | multimap::emplace 通过插入新元素来扩展容器。 |
9 | multimap::emplace_hint 提示版本 使用提示作为元素的位置在多图中插入新元素。 |
10 | multimap::empty 测试multimap是否为空。 |
11 | multimap::end 返回一个迭代器,它指向multimap中的past-the-end元素。 |
12 | multimap::equal_range 返回与特定键匹配的元素范围。 |
13 | multimap::erase position version 从位置移除多图的单个元素。 |
14 | multimap::erase position version 从位置移除多图的单个元素。 |
15 | multimap::erase 键 删除与键k关联的映射值。 |
16 | multimap::erase 范围版本 从multimap中删除元素范围。 |
17 | multimap::erase 范围版本 从multimap中删除元素范围。 |
18 | multimap::find 查找与键k关联的元素。 |
19 | multimap::get_allocator 返回与multimap关联的分配器。 |
20 | multimap::insert 单个元素 通过在multimap中插入新元素来扩展容器。 |
21 | multimap::insert 提示版本 通过在multimap中插入新元素来扩展容器。 |
22 | multimap::insert 范围版本 通过在多图中插入新元素来扩展容器。 |
23 | multimap::insert move hint verstion 通过插入新元素来扩展多图。 |
24 | multimap::insert 初始化列表版本 通过从初始化列表中插入新元素来扩展多图。 |
25 | multimap::key_comp 返回一个比较键的函数对象,它是此容器的构造函数参数comp的副本。 |
26 | multimap::lower_bound 返回指向第一个元素的迭代器,该元素不小于键k 。 |
27 | multimap::max_size 返回multimap可以保存的最大元素数。 |
28 | multimap::operator= copy version 通过替换旧映射将新内容分配给多图,并在必要时修改大小。 |
29 | multimap::operator= 移动版本 将一个多图的内容移动到另一个多图,并根据需要修改大小。 |
30 | multimap::operator= 初始化列表版本 将元素从初始化列表复制到多图。 |
31 | multimap::rbegin 返回一个反向迭代器,它指向multimap的最后一个元素。 |
32 | multimap::rend 返回一个反向迭代器,它指向multimap的反向末尾。 |
33 | multimap::size 返回多图中存在的元素数。 |
34 | multimap::swap 使用multimap x的内容交换multimap的内容。 |
35 | multimap::upper_bound 返回指向第一个元素的迭代器,该元素大于键k 。 |
36 | multimap::value_comp 返回一个函数对象,用于比较std :: multimap :: value_type类型的对象。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | operator== 测试两个multimaps是否相等。 |
2 | operator!= 测试两个multimaps是否相等。 |
3 | operator< 测试第一个multimap是否小于其他。 |
4 | multimap::operator<= 测试第一个multimap是否小于或等于other。 |
5 | operator> 测试第一个multimap是否大于其他。 |
6 | operator>= 测试第一个multimap是否大于或等于other。 |
7 | swap() 使用multimap x的内容交换multimap的内容。 |