1. 程式人生 > >C++筆記之map使用

C++筆記之map使用

標頭檔案#include<map>.

map<string,int> m,存入的是鍵值對,自動按鍵值升序排列。

插入:通過關鍵字或insert,五種方式。

訪問:m[5]為關鍵字5對應的值;            迭代器it->first,it->second. 

查詢:it=m.find(5),返回關鍵字5對應的迭代器,若未找到,返回m.end()

刪除:m.erase(5),刪除關鍵字為5的元素;            m.erase(it),刪除迭代器指定的元素       判空:m.empty(),若為空,返回1;若不空,返回0。

清空:m.clear(). 

具體用法均標註在程式碼中。

#include<iostream>
#include<map>

using namespace std;

int main(){

//1.鍵為int,值為string 
	map<int,string> m1;
	
//插入 
	m1[1]="aaa"; //直接 
	m1.insert(make_pair(2,"bbb")); //make_pair
	m1.insert(pair<int,string>(3,"ccc")); //pair
	pair<int,string> v(4,"ddd"); m1.insert(v);//pair,insert
	m1.insert(map<int,string>::value_type(5,"eee"));//map::value_type
	
	//輸出
	cout<<"元素個數:"<<m1.size()<<endl;   //大小 
	map<int,string>::iterator it1;
	for(it1=m1.begin();it1!=m1.end();it1++){
		cout<<it1->first<<' '<<it1->second<<endl;
	} 
	cout<<endl;
	
//訪問	
	cout<<"關鍵字3對應的值為:"<<m1[3]<<endl; //通過鍵值
	it1=m1.begin();
	cout<<it1->first<<' '<<it1->second<<endl; //通過迭代器,訪問第一個元素 
	cout<<endl;
	
//查詢
	it1=m1.find(4);//返回查詢的關鍵字對應的迭代器,若未找到,返回m1.end() 
	if(it1!=m1.end()) cout<<"找到關鍵字4對應的值為:"<<it1->second<<endl;
	cout<<endl;
	
//刪除
	it1=m1.begin();
	m1.erase(it1);//根據迭代器,刪除第一個
	m1.erase(4);//根據鍵值,刪除第四個
	
	//輸出
	cout<<endl<<"元素個數:"<<m1.size()<<endl; 
	for(it1=m1.begin();it1!=m1.end();it1++){
		cout<<it1->first<<' '<<it1->second<<endl;
	} 
	cout<<endl;
	 
//判空、清空 
	cout<<"map空嗎:"<<m1.empty()<<endl;
	m1.clear();
	cout<<"map空嗎:"<<m1.empty()<<endl;
/*---------------------------------------------------------------------------------------------*/
cout<<endl<<endl<<"=============================================================="<<endl<<endl;
/*---------------------------------------------------------------------------------------------*/
//2.鍵為string,值為int 
	map<string,int> m2;

//插入
	m2["aaa"]=1;
	m2.insert(make_pair("bbb",2));
	m2.insert(pair<string,int>("ccc",3));
	pair<string,int> v2("ddd",4); m2.insert(v2);	
	m2.insert(map<string,int>::value_type("eee",5));
	
	//輸出
	cout<<"元素個數:"<<m2.size()<<endl;   //大小 
	map<string,int>::iterator it2;
	for(it2=m2.begin();it2!=m2.end();it2++){
		cout<<it2->first<<' '<<it2->second<<endl;
	} 
	cout<<endl; 
 
//訪問	
	cout<<"關鍵字ccc對應的值為:"<<m2["ccc"]<<endl; //通過鍵值
	it2=m2.begin();
	cout<<it2->first<<' '<<it2->second<<endl; //通過迭代器,訪問第一個元素 
	cout<<endl; 

//查詢
	it2=m2.find("ddd");//返回查詢的關鍵字對應的迭代器,若未找到,返回m2.end() 
	if(it2!=m2.end()) cout<<"找到關鍵字ddd對應的值為:"<<it2->second<<endl;
	cout<<endl;
 
//刪除
	it2=m2.begin();
	m2.erase(it2);//根據迭代器,刪除第一個
	m2.erase("ddd");//根據鍵值,刪除第四個
 
 	//輸出
	cout<<endl<<"元素個數:"<<m2.size()<<endl; 
	for(it2=m2.begin();it2!=m2.end();it2++){
		cout<<it2->first<<' '<<it2->second<<endl;
	} 
	cout<<endl;

//判空、清空 
	cout<<"map空嗎:"<<m2.empty()<<endl;
	m2.clear();
	cout<<"map空嗎:"<<m2.empty()<<endl; 
 
	return 0;
} 

執行結果: