一、定義
(1) map<string, int> Map;
(2) 或者是:typedef map<string,int> Mymap;
Mymap Map;
二、插入元素
插入數據之前先說一下pair 和 make_pair 的用法。
1. pair是一個結構體,有first和second 兩個域,可以直接訪問
1 string key="sunquan"; 2 int value=123456; 3 pair <string,int> b(key, value);//這里 pair <string,string>是數據類型,后面是調帶參構造方法
4 cout<<b.first<<endl;
2. 而make_pair是返回一個pair <類型,類型> 的數據,
eg:make_pair("asa",123456);
不過還得找個pair <string,int>類型的變量來接受返回值。
(1) Map["abc"]=1;
(2) Map.insert(pair<string,int>("c",3));
(3) Map.insert(make_pair<string,int>("d",4));
三、修改、查找元素
(1)修改Map["sunquan"]=11111;
(2)查找數據:可以通過鍵來查,語法:Map.find(key); 這樣會返回迭代器的地址,key不存在的話迭代器的值為Map.end();
注:不要用int value=Map[key];
這樣會在Map中增加這個key,而value就是缺省值(int 為0,string為空字符串)。
四、刪除元素
(1)通過key刪除;
(2)通過迭代器來刪除;
相關操作的詳細代碼:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <map> 6 using namespace std; 7 8 int main() 9 { 10 map<string,int> Map; 11 map<string,int> ::iterator it; 12 Map.insert(pair<string,int>("root",12)); 13 Map.insert(pair<string,int>("scot",11)); 14 for(it=Map.begin();it!=Map.end();it++) 15 cout<<it->first<<" "<<it->second<<endl; 16 it=Map.begin(); 17 Map.erase(it);//通過迭代器刪除 18 string key="root"; 19 Map.erase(key);//通過key刪除 20 21 Map.erase(Map.begin(),Map.end());//一個迭代器,到另一個迭代器 22 //相當於 Map.clear(); 23 24 for(it=Map.begin();it!=Map.end();it++) 25 cout<<it->first<<" "<<it->second<<endl; 26 return 0; 27 }
注:
map<int, string>::iterator it 是聲明一個 迭代器
map<int, string> it 是 聲明一個map容器
五、c++中map的常見方法
begin() 返回指向map頭部的迭代器
clear() 刪除所有元素
count() 返回指定元素出現的次數
empty() 如果map為空則返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊條目的迭代器對
erase() 刪除一個元素
find() 查找一個元素
insert() 插入元素
max_size() 返回可以容納的最大元素個數
size() 返回map中元素的個數
swap() 交換兩個map
get_allocator() 返回map的配置器
key_comp() 返回比較元素key的函數
lower_bound() 返回鍵值>=給定元素的第一個位置
max_size() 返回可以容納的最大元素個數
rbegin() 返回一個指向map尾部的逆向迭代器
rend() 返回一個指向map頭部的逆向迭代器
upper_bound() 返回鍵值>給定元素的第一個位置
value_comp() 返回比較元素value的函數