1、Map的常用用法
map:映射。可以將任何基本類型,結構體,STL容器映射到任何基本類型包括容器。
使用map,需要加map的頭文件,#include<map>和using namespace std;
1.1、map的定義
map<typename1,typename2> mp; map<string,int> mp; //如果是字符串到int的映射,必須使用string不能使用char數組。
1.2、map容器元素的訪問
map的兩種訪問方式:下標訪問、迭代器訪問
1.2.1、下標訪問
和訪問數組一樣。map中鍵是唯一的
1.2.2、迭代器訪問
map<typename1,typename2>::iterator it;

#include<stdio.h> #include<map> using namespace std; int main() { map<char,int> mp; mp['a']=5; mp['b']=10; mp['d']=40; mp['c']=20; mp['c']=30;//20被覆蓋 printf("%d\n",mp['c']); for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++) { printf("%c %d\n",it->first,it->second);//it->first:當前映射的鍵,it->second:當前映射的值 } //a 5 //b 10 //c 30 //d 40 //map會以鍵從小到大的順序自動排序。map內部是使用紅黑樹實現的,set內部也是。 //建立映射的時候,會自動實現從小到大的排序功能 return 0; }
1.3、map常用函數
1.3.1、find()
find(key):返回鍵為key的映射,時間復雜度為O(logN)
1.3.2、erase()
刪除單個元素:
mp.erase(it):it為需要刪除的元素的迭代器。時間復雜度為O(1)
mp.erase(key):key為刪除元素的鍵,時間復雜度為O(logN)
刪除區間內的元素,左閉右開[start,end)
1.3.3、size()
1.3.4、clear()
用來清空map,復雜度為O(N)

#include<stdio.h> #include<map> using namespace std; int main() { map<char,int> mp; mp['a']=5; mp['b']=10; mp['d']=40; mp['c']=20; mp['c']=30;//20被覆蓋 printf("%d\n",mp['c']);//30 mp.erase('b');//刪除鍵為b的映射,也就是b 10 for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++) { printf("%c %d\n",it->first,it->second); } //a 5 //c 30 //d 40 map<char,int>::iterator it=mp.find("a"); mp.erase(it);//刪除a 5 for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++) { printf("%c %d\n",it->first,it->second); } //c 30 //d 40 mp['e']=50; mp['f']=60; map<char,int>::iterator it=mp.find("d"); mp.erase(it,mp.end());//刪除區間, d 40 e 50 return 0; }
1.4、map的常見用途
a、建立字符或者字符串與整數之間的映射的時候,使用map
b、判斷大整數或者其他類型數據是否存在的時候,map可以當bool數組用
c、字符串和字符串的映射
2018-09-25 19:20:09
@author:Foreordination