zoukankan      html  css  js  c++  java
  • 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 }

    只有不断学习才能进步!

  • 相关阅读:
    CF-807B
    CF-807A
    sort()的升降序函数操作
    CF-805D
    CF-805B
    CF-805A
    CF-796C
    CF-796B
    图论学习四之Disjoint set union并查集
    图论学习三之Shortest Path最短路
  • 原文地址:https://www.cnblogs.com/wenbao/p/7428739.html
Copyright © 2011-2022 走看看