1. map 简介
map 是一类关联式容器(类似于 Python 语言中的 dict)。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改 key。
2. map 的功能
自动建立 Key - value 的对应。key 和 value 可以是任意你需要的类型。根据 key 值快速查找记录,查找的复杂度基本是 Log(N),如果有 1000 个记录,最多查找 10 次,1,000,000 个记录,最多查找 20 次。
- 快速插入 Key - Value 记录
- 快速删除记录
- 根据 Key 修改 value 记录
- 遍历所有记录
3. 使用 map
使用 map 得包含 map 类所在的头文件 #include <map>,STL 头文件没有扩展名 .h!
map 对象是模板类,需要关键字和存储对象两个模板参数:
std::map<int, std::string> personnel;
这样就定义了一个用 int 作为索引,并拥有相关联的指向 string 的指针。
为了使用方便,可以对模板类进行一下类型定义:
typedef std::map<int, std::string> MyMap;
MyMap enumMap;
4. map 的构造函数
map 共提供了 6 个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些 map 的构造方法,这里要说下的就是,我们通常用如下方法构造一个 map:
std::map<int, std::string> mapStudent;
5. 数据的插入
在构造 map 容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法:
1. 用 insert 函数插入 pair 数据
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main() {
map<int, string> mapStudent;
mapStudent.insert(pair<int, string>(1, "student_one"));
mapStudent.insert(pair<, string>(, ));
mapStudent.(<, string>(, ));
map<, string>::iterator iter;
(iter = mapStudent.(); iter != mapStudent.(); iter++)
cout << iter->first << << iter->second << endl;
}

