STL学习之map容器(0)
map Map是一系列有一个键值(key)和映射值(value)组合的存储元素关联容器。 在一个map中,key值是唯一的确定一个元素,而映射值(value)是这个key相关的值的某个排序。键的类型和值的类型是不同的,例如,map的一个典型的实例----电话簿索引是以姓名作为key,以电话号码作为value的。 本质上,map中的元素是从低到
map
Map是一系列有一个键值(key)和映射值(value)组合的存储元素关联容器。
在一个map中,key值是唯一的确定一个元素,而映射值(value)是这个key相关的值的某个排序。键的类型和值的类型是不同的,例如,map的一个典型的实例----电话簿索引是以姓名作为key,以电话号码作为value的。
本质上,map中的元素是从低到高的键值排序伴随着一个设置在构造函数中严格的弱排序的标准。
作为关联容器,他们特别设计了通过键值快速访问(不像通过相关联或者相对位置快速访问的顺序容器)。
因此,下面是map作为关联容器的几个主要特征:
- 唯一的键值:在map容器中,每个键值都是唯一的。
- 每一个元素都是有键和值组成。元素值即为其键的简单的关联容器,需要看一下set关联容器。
- 元素始终保持着严格的弱排序。
map中的键唯致使此关联容器可以直接执行访问操作(operator[]),此访问操作允许访问值。
在c++标准模板库的说明文档中,map容器有四个模板参数:
template<class Key, class T., class Compare = less<Key>, class Allocator = allocator<pair<const Key,T> > > class map;
参数解析:
- Key:键值的类型,map容器的每一个元素都是唯一的有键值确定。
- T:映射值的类型,map中的每一个元素都是用于存储某些数据作为其映射值。
- Compare:比较类:一个带有两个键类型的参数和返回一个布尔值(bool)。表达式comp(a, b),comp是比较类的对象,a和b是键值,如果a在b之前(类似a<b),返回true;也可以是执行函数操作的类或者一个指向函数的指针。它默认为less<Key>,其中less<Key>和a<b返回的值类似。map对象用这个表达式决定元素在容器中的位置。所有在map容器着哦功能的元素都始终遵守这个规则。
- Allocator:用于定义存储分配模型的分配器对象类型,默认的情况下,使用allocator类模板,这个类模板是最简单的内存分配模型并且是值独立的。
这个容器类支持双向迭代。
迭代器访问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;
成员函数
-
(constructor)
- map容器的构造函数。
-
(destructor)
- Map容器的析构函数。
-
operator=
- 拷贝容器内容。
迭代器:
-
begin
- 返回第一个元素的迭代器。
-
end
- 返回最后一个元素的下一个为位置的迭代器
-
rbegin
- 返回指向反向第一个位置的反向迭代器
-
rend
- 返回指向最后一个元素的下一个位置的反向迭代器
容器(Capacity):
-
empty
- 测试容器是否为空
-
size
- 返回容器大小
-
max_size
- 返回最大的值
元素访问:
-
operator[]
- 访问元素。
修改容器操作:
-
insert
-
插入元素
-
erase
- 擦除元素
-
swap
- 交换内容(指不同的map容器之间交换)
-
clear
- 清空容器
观察者(Observers):
-
key_comp
- 返回键值比较对象。
-
value_comp
- 返回映射值比较对象。
操作:
-
find
- 获取元素迭代器
-
count
- 计算指定key元素的个数,由于map容器的特点,此值只能取0和1中的一个。
-
lower_bound
- 返回一个迭代器,指向 键值>= key的第一个元素。
-
upper_bound
- 返回一个迭代器,指向 键值> key的第一个元素。
-
equal_range
- Get range of equal elements
分配器:
-
get_allocator
- 获取容器对象
成员类型
of template <class Key, class T, class Compare=less<Key>, class Allocator=allocator<pair <const Key, T> > > class map;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> |
更多推荐
所有评论(0)