wenbao与map/multimap

 

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 }

 

 

 

 

 

只有不断学习才能进步!

 

posted @ 2018-04-14 13:45  wenbao  阅读(189)  评论(0编辑  收藏  举报