map简介
map是一类关联式容器,它是模板类。关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。
map的功能
- 自动建立Key - value的对应。key 和 value可以是任意你需要的类型,但是需要注意的是对于key的类型,唯一的约束就是必须支持<操作符。
- 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
- 快速插入Key - Value 记录。
- 快速删除记录
- 根据Key 修改value记录。
- 遍历所有记录。
map的定义
使用map得包含map类所在的头文件:#include <map> //注意,STL头文件没有扩展名.h
map对象是模板类,需要关键字和存储对象两个模板参数,基本的定义模式如下:
map<int, int>hc_map1;
map<string,int>hc_map2;
在使用时,如hc_map2中,string中存放键,int中存放值,对于键和值得理解,可以理解在一个容器中string存放字符,int 是这个字符的相关联的信息,就像结构体中的元素都是关联的。实例化,string存放字符串,继续 向容器添加时,map容器会自动扫描遍历其是否存在,若容器中有则直接修改值,这时值可以将作为字符串出现次数+1;若容器中没有则添加键,再保存对应的值。
这样就定义了一个以int为键,值为string的map对象personnel。
功能函数
begin() | 返回指向map头部的迭代器 |
clear() | 删除所有元素 |
count() | 返回指定元素出现的次数 |
empty() | 如果map为空则返回true |
end() | 返回指向map末尾的迭代器 |
equal_range() | 返回特殊条目的迭代器对 |
erase() | 删除一个元素 |
find() | 查找一个元素 |
get_allocator() | 返回map的配置器 |
insert() | 插入元素 |
key_comp() | 返回比较元素key的函数 |
lower_bound() | 返回键值>=给定元素的第一个位置 |
max_size() | 返回可以容纳的最大元素个数 |
rbegin() | 返回一个指向map尾部的逆向迭代器 |
rend() | 返回一个指向map头部的逆向迭代器 |
size() | 返回map中元素的个数 |
swap() | 交换两个map |
upper_bound() | 返回键值>给定元素的第一个位置 |
value_comp() | 返回比较元素value的函数 |