这篇博客部分内容转发自http://www.cnblogs.com/anywei/archive/2011/10/27/2226830.html
C++中的关联容器支持通过键来高效的查找和读取元素。这里我们介绍一下C++的关联容器之一:map
在介绍map之前我觉得有必要先介绍一下一种简单的标准库类型--pair
pair类型提供的操作:
pair<T1,T2> p1;
pair<T1,T2> p1(v1,v2);
make_pair(v1,v2);
p.first
p.second
还有两个pair类型对象的比较
下面开始介绍map的内容:
1 头文件
#include <map>
2 定义
map<string, int> my_Map;
或者是typedef map<string, int> MY_MAP;
MY_MAP my_Map;
3 插入数据
(1) my_Map["a"] = 1;
(2) my_Map.insert(map<string, int>::value_type("b",2));
(3) my_Map.insert(pair<string,int>("c",3));
(4) my_Map.insert(make_pair<string,int>("d",4));
4 查找数据和修改数据
(1) int i = my_Map["a"];
my_Map["a"] = i;
(2) MY_MAP::iterator my_Itr;
my_Itr.find("b");
int j = my_Itr->second;
my_Itr->second = j;
不过注意,键本身是不能被修改的,除非删除。
(3)map还提供一个count函数,用来检查map对象中某个键是否存在
map.count(key) key存在返回1,否则返回0
5 删除数据
(1) my_Map.erase(my_Itr);
(2) my_Map.erase("c");
注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
6 迭代数据
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {}
7 其它方法
my_Map.size() 返回元素数目
my_Map.empty() 判断是否为空
my_Map.clear() 清空所有元素
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等