map的常用用法詳解

//頭文件
#include<map>
using namespace std;//c++
//用法
//map可以將任何數據類型(包括STL(Standard Template Library))
//映射到任何基本類型(包括STL容器)
map<typename1,typename2>mp;//第一個是鍵的類型,第二個是值的類型
//注意
如果是字符串到整型的映射,必須使用string而不能用char數組
因爲不能用數組作鍵。
//訪問方式1)直接通過下標訪問和正常數組訪問一樣
(2)迭代器訪問
map<typename1,typename2>::iterator it;
#include<stdio.h>
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
	{
	  printf("%c %d\n",it->first,it->second);
	}//it->first訪問鍵,it->second訪問值 
	return 0;
	}//map會將鍵按照從小到大自動排序

注意:map內部會將鍵從小到大自動排序
find()
find(key),配合迭代器使用查找某一個鍵的位置

#include<stdio.h>
#include<map>
using namespace std;
int main()
{
	map<char,int>mp;
	mp['a']=1;
	mp['b']=2;
	mp['c']=3;
	map<char,int>::iterator it=mp.find('b');
	printf("%c %d",it->first,it->second);
	return 0;
	}

erase()
erase()有兩種用法:
1,刪除單個元素
2,刪除一個區間的所有元素
刪除一個區間的代碼
mp.erase(first,last)
last爲需要刪除的區間的末尾迭代器的下一個地址,[first,last)
注意
mp.begin()是指第一個元素的下標地址
mp.end()是指最後一個元素下標的後一個地址

#include<stdio.h>
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['a']=10;
	mp['b']=20;
	mp['c']=30;	
	map<char,int>::iterator it=mp.find('b');
	mp.erase(it,mp.end());
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
	printf("%c %d\n",it->first,it->second);
	return 0;
}

size()
用來獲取map中的對數

clear()
用來清空map中所有元素

個人見解
以前一直開一個大數組來用
遇到通過char查詢int的時候就a[(int)c]來進行操作,但有時候數組太大浪費空間,而且數組是不能開無限大的,侷限很大所以學會map救我一命

後續

使用經驗
舉例說明;
在解題過程中
map<int,int>mp;
//只要出現mp[int]聲明就相當於在mp加入了元素,因爲map會自動初始化爲對應的值。
//所以mp.size()會變化。
if(mp[b]!=0)//mp中多了鍵爲b的元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章