map 是关联容器,按照特定顺序存储由 key value (键值) 和 mapped value (映射值) 组合形成的元素。
在映射中,键值通常用于对元素进行排序和唯一标识,而映射的值存储与此键关联的内容。该类型的键和映射的值可能不同,并且在部件类型被分组在一起VALUE_TYPE,这是一种对类型结合两种:
typedef pair<const Key, T> value_type;
在内部,映射中的元素总是按照由其内部比较对象(比较类型)指示的特定的严格弱排序标准按键排序。映射容器通常比unordered_map容器慢,以通过它们的键来访问各个元素,但是它们允许基于它们的顺序对子集进行直接迭代。 在该映射值地图可以直接通过使用其相应的键来访问括号运算符((操作符[] )。 映射通常如实施
template < class Key, // map::key_type
class T, // map::mapped_type
class Compare = less<Key>, // map::key_compare
class Alloc = allocator<pair<const Key,T> > // map::allocator_type
> class map;
| 方法 | 含义 |
|---|---|
| map | 构造函数 |
| ~map | 析构函数,销毁容器对象 |
| begin | 返回引用map容器中第一个元素的迭代器 |
| key_comp | 返回容器用于比较键的比较对象的副本 |
| value_comp | 返回可用于比较两个元素的比较对象,以获取第一个元素的键是否在第二个元素之前 |
| find | 在容器中搜索具有等于k的键的元素,如果找到则返回一个迭代器,否则返回map::end的迭代器 |
| count | 在容器中搜索具有等于k的键的元素,并返回匹配的数量 |
| lower_bound | 返回指向容器中第一个元素的迭代器,该元素的键不会在k之前出现 |
| upper_bound | 返回一个指向容器中第一个元素的迭代器,它的关键字被认为是在k之后 |
| equal_range | 返回包含容器中所有具有与k等价的键的元素的范围边界 |
1. map::map
构造一个映射容器对象,根据所使用的构造器版本初始化其内容:
(1)空容器构造函数(默认构造函数)
构造一个空的容器,没有元素。
(2)范围构造函数
构造具有一样多的元素的范围内的容器[第一,最后一个),其中每个元件布设构造的从在该范围内它的相应的元件。
(3)复制构造函数(并用分配器复制)
使用x中的每个元素的副本构造一个容器。
(4)移动构造函数(并与分配器一起移动)
构造一个获取x元素的容器。
如果指定了alloc并且与x的分配器不同,那么元素将被移动。否则,没有构建元素(他们的所有权直接转移)。
x保持未指定但有效的状态。
(5)初始化列表构造函数
用il中的每个元素的副本构造一个容器。
empty (1)
explicit map (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
explicit map (const allocator_type& alloc);
range (2)
template <class InputIterator>
map (InputIterator first, InputIterator last,
const key_compare& comp = key_compare(),
const allocator_type& = allocator_type());
copy (3)
map (const map& x);
map (const map& x, const allocator_type& alloc);
move (4)
map (map&& x);
map (map&& x, const allocator_type& alloc);
initializer list (5)
map (initializer_list<value_type> il,
const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
Example
#include <iostream>
#include <map>
bool fncomp (char lhs, char rhs) {
return lhs<rhs;}
struct classcomp {
bool operator() (const char& lhs, const char& rhs) const
{
return lhs<rhs;}
};
int main ()
{
std::map<char,int> first;
first['a']=10;
first['b']=30;
first['c']=50;
first['d'

本文详细介绍了C++11标准库中的map容器,包括map的构造、迭代器begin、键值比较函数key_comp和value_comp、查找函数find、计数函数count、下界lower_bound、上界upper_bound以及等价范围equal_range。通过示例展示了每个函数的用法和输出结果。
最低0.47元/天 解锁文章
1246

被折叠的 条评论
为什么被折叠?



