3.4 map
3.4.1 map是什么
1.?map的本质
map本质是一类关联式容器,属于模板类关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。map内部数据的组织,map内部自建一棵红黑树(一种非严格意义上的平衡二叉树),这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。
2.?map的功能
自动建立Key-value的一一对应关系。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用char *来描述字符串,而是采用STL中string来描述),可以使用这样的一个map:Map<int, string> mapStudent;
key和value可以是任意你需要的类型,但是需要注意的是对于key的类型,唯一的约束就是必须支持<操作符。
根据key值快速查找记录,查找的复杂度基本是Log(N),即如果有1000个记录,最多查找10次;1?000?000个记录,最多查找20次。除此之外,还有快速插入Key-Value记录、快速删除记录、根据Key修改value记录、遍历所有记录等功能。
3.?map需要包括的头文件
使用map得包含map类所在的头文件:#include <map> //注意,STL头文件没有扩展名.h。