map
1 //#pragma warning(disable:4786)//不懂 2 #include <map>//默认由小到大排列 3 #include <iostream> 4 #include <string> 5 using namespace std; 6 7 struct mycmp{ 8 bool operator()(const int &a,const int &b){ 9 return a>b; 10 } 11 }; 12 13 struct Info{ 14 string name; 15 float score; 16 //重载”<“操作符,自定义排序规则 17 bool operator < (const Info &a) const{ 18 //按score由大到小排列。如果要由小到大排列,使用”>“号即可 19 return a.score<score; 20 } 21 }; 22 23 int main(){ 24 //定义map对象,当前没有任何元素 25 map<string,float >m; 26 //插入元素,按键值由小到大放入黑白树中 27 m["Jack"]=98.5; 28 m["Tom"]=96.0; 29 m["Kate"]=97.5; 30 31 //前向遍历元素 32 map<string,float>::iterator it; 33 for(it=m.begin(); it!=m.end(); it++){ 34 //输出键值与映射数据 35 cout<<(*it).first<<" :"<<(*it).second<<endl; 36 } 37 38 //后向遍历元素 39 map<string,float>::reverse_iterator rit; 40 for(rit=m.rbegin(); rit!=m.rend(); rit++){ 41 //输出键值与映射数据 42 cout<<(*rit).first<<" :"<<(*rit).second<<endl; 43 } 44 45 map<int,char,mycmp> mm; 46 mm[25]='m'; 47 mm[28]='k'; 48 mm[10]='x'; 49 mm[30]='a'; 50 map<int,char>::iterator itt; 51 52 for(itt=mm.begin(); itt!=mm.end(); itt++){ 53 cout<<(*itt).first<<" :"<<(*itt).second<<endl; 54 } 55 56 itt=mm.find(299); 57 if(itt!=mm.end()){ 58 cout<<(*itt).first<<" :"<<(*itt).second<<endl; 59 }else{ 60 cout<<"No find it"<<endl; 61 } 62 63 //删除键值为28的元素 64 mm.erase(28); 65 for(itt=mm.begin(); itt!=mm.end(); itt++){ 66 cout<<(*itt).first<<" :"<<(*itt).second<<endl; 67 } 68 69 map<Info,int> mt; 70 Info info; 71 info.name="Jack"; 72 info.score=60; 73 mt[info]=25; 74 info.name="Bomi"; 75 info.score=80; 76 mt[info]=10; 77 info.name="Peti"; 78 info.score=66.5; 79 mt[info]=30; 80 map<Info,int>::iterator iit; 81 for(iit=mt.begin(); iit!=mt.end(); iit++){ 82 cout<<(*iit).second<<" :"; 83 cout<<((*iit).first).name<<" "<<((*iit).first).score<<endl; 84 } 85 86 map<char ,int> mp; 87 mp['0']=0; 88 mp['1']=1; 89 mp['2']=2; 90 mp['3']=3; 91 mp['4']=4; 92 mp['5']=5; 93 mp['6']=6; 94 mp['7']=7; 95 mp['8']=8; 96 mp['9']=9; 97 98 /* 99 for(int j=0;j<10;j++){ 100 mp['0'+j]=j; 101 } 102 */ 103 104 string sa,sb; 105 sa="123"; 106 int i; 107 int sum=0; 108 for(i=0;i<sa.length();i++) 109 sum+=mp[sa[i]]; 110 cout<<"sum= "<<sum<<endl; 111 112 map<int ,char> mmm; 113 mmm[0]='0'; 114 mmm[1]='1'; 115 mmm[2]='2'; 116 mmm[3]='3'; 117 mmm[4]='4'; 118 mmm[5]='5'; 119 mmm[6]='6'; 120 mmm[7]='7'; 121 mmm[8]='8'; 122 mmm[9]='9'; 123 124 /* 125 for(int j=0;j<10;j++){ 126 m[j]='0'+j; 127 } 128 */ 129 int n=7; 130 string s="The number is "; 131 cout<<s+mmm[n]<<endl; 132 133 return 0; 134 }
multimap
1 #include <iostream> 2 #include <map> 3 #include <string> 4 using namespace std; 5 int main(){ 6 multimap<string,double> m; 7 m.insert(pair<string,double>("Jack",300.5)); 8 m.insert(pair<string,double>("Kity",200)); 9 m.insert(pair<string,double>("Memi",500)); 10 m.insert(pair<string,double>("Jack",306)); 11 multimap<string,double>::iterator it; 12 13 it=m.find("Jack"); 14 if(it!=m.end()){ 15 cout<<(*it).first<<" "<<(*it).second<<endl; 16 }else{ 17 cout<<"No find it"<<endl; 18 } 19 20 for(it=m.begin();it!=m.end();it++){ 21 cout<<(*it).first<<" "<<(*it).second<<endl; 22 } 23 24 int n=m.erase("Jack"); 25 cout<<n<<endl; 26 for(it=m.begin();it!=m.end();it++){ 27 cout<<(*it).first<<" "<<(*it).second<<endl; 28 } 29 30 return 0; 31 }
只有不断学习才能进步!