Map是一系列有一个键值(key)和映射值(value)组合的存储元素关联容器。
在一个map中,key值是唯一的确定一个元素,而映射值(value)是这个key相关的值的某个排序。键的类型和值的类型是不同的,例如,map的一个典型的实例----电话簿索引是以姓名作为key,以电话号码作为value的。
本质上,map中的元素是从低到高的键值排序伴随着一个设置在构造函数中严格的弱排序的标准。
作为关联容器,他们特别设计了通过键值快速访问(不像通过相关联或者相对位置快速访问的顺序容器)。
因此,下面是map作为关联容器的几个主要特征:
map中的键唯致使此关联容器可以直接执行访问操作(operator[]),此访问操作允许访问值。
在c++标准模板库的说明文档中,map容器有四个模板参数:
template<class Key, class T., class Compare = less<Key>, class Allocator = allocator<pair<const Key,T> > > class map;
这个容器类支持双向迭代。
迭代器访问map容器元素的key和value。为此,类定义了value_type类型,此类型是一个第一个值为对应的常key类型(模板参数Key)和第二个值对应的value(模板参数为T)的pair类:
typedef pair<const Key, T> value_type;
map容器的迭代器指向value_type类型的元素,因此,对于一次迭代调用,可以指向map元素,此元素的key和value都可以分别访问到:
map<Key, T>::iterator it; (*it).first; //键值 (*it).second; //映射值 (*it) //元素值(pair<const Key,T>类型)当然,任何其他的直接访问操作,例如->或者[]可以使用,例如:
it->first; it->second;
member type | definition |
---|---|
key_type | Key |
mapped_type | T |
value_type | pair<const Key,T> |
key_compare | Compare |
value_compare | Nested class to compare elements (see member function value_comp) |
allocator_type | Allocator |
reference | Allocator::reference |
const_reference | Allocator::const_reference |
iterator | Bidirectional iterator |
const_iterator | Constant bidirectional iterator |
size_type | Unsigned integral type (usually same as size_t) |
difference_type | Signed integral type (usually same as ptrdiff_t) |
pointer | Allocator::pointer |
const_pointer | Allocator::const_pointer |
reverse_iterator | reverse_iterator<iterator> |
const_reverse_iterator | reverse_iterator<const_iterator> |