這篇博客部分內容轉發自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() 清空所有元素
可以直接進行賦值和比較:=, >, >=, <, <=, != 等等