C++筆記之map使用
阿新 • • 發佈:2018-12-13
標頭檔案#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; }
執行結果: