• c++中stl----map


    1 map的本质

    (1)关联式容器,键值对应

    (2)增加和删除节点对迭代器的影响很小。

    (3)对于迭代器来说不可以修改键值,只能修改对应的实值。

    (4)map内部数据的祖居是自建一颗红黑树(或者说是平衡二叉树),具有自动排序的功能。

    2 map的查增删

    (1)map的插入

     1 #include <map>
     2 #include <string>
     3 #include <iostream>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     //方式一 pair
     9     map<int,string> mapStudent;
    10     mapStudent.insert(pair<int,string>(1,"lan"));
    11     mapStudent.insert(pair<int,string>(2,"ji"));
    12     mapStudent.insert(pair<int,string>(1,"kjh"));
    13     map<int,string>::iterator iter;
    14     map<int,string>::iterator iter1;
    15     //方式二
    16     map<int string> mapStudent1;
    17     mapStudent1.insert(map<int,string>::value_type(1,"nihao"));
    18     mapStudent1.insert(map<int,string>::value_type(1,"ben"));
    19     for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
    20     {
    21         cout<<iter->first<<" "<<iter->second<<endl;
    22     }
    23     for(iter=mapStudent1.begin();iter!=mapStudent1.end();iter++)
    24     {
    25         cout<<iter->first<<" "<<iter->second<<endl;
    26 
    27     }
    28     return 0;     
    29 }
    View Code

    2 map的遍历

     1 #include <map>
     2 #include <string>
     3 #include <iostream>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     map<int,string> mapStudent;
     9     mapStudent[1]="stu_one";
    10     mapStudent[1]="stu_two";
    11     mapStudent[1]="stu_three";
    12     map<int,string>::iterator iter = mapStudent.find(1);
    13     if(iter!=mapStudent.end())
    14     {
    15         cout<<"找到了 value="<<iter->second<<endl;
    16     }else
    17     {
    18         cout<<"没有找到"<<endl;
    19     }
    20     return 0;
    21 }
    View Code

    3 map的删除

     1 #include <map>
     2 #include <string>
     3 #include <iostream>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     map<int,string> mapStudent;
     9     mapStudent[1]="stu_one";
    10     mapStudent[1]="stu_two";
    11     mapStudent[1]="stu_three";
    12     map<int,string>::iterator iter = mapStudent.begin();
    13     for(;iter!=mapStudent.end();)
    14     {
    15         if((*iter).sencond=="stu_one")
    16         {
    17             mapStudent.erase(iter++);//iter被erase以后就会失效 所以后面不能再有iter++
    18         }else
    19         {
    20             ++iter;
    21         }
    22     }
    23     for(iter=mapStudent1.begin();iter!=mapStudent1.end();iter++)
    24     {
    25         cout<<iter->first<<" "<<iter->second<<endl;
    26 
    27     }
    28     return 0;
    29 }
    View Code

    4 map排序

    默认按照key从小到大。从大到小greater 相反less

     1 #include <map>
     2 #include <string>
     3 #include <iostream>
     4 using namespace std;
     5 int main()
     6 {
     7     map<string,int,greater<string>> mapStudent;
     8     mapStudent['nisan']=90;
     9     mapStudent['nisan']=70;
    10     mapStudent['nisan']=80;
    11     map<string,int>::iterator iter = mapStudent.begin();
    12     for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
    13     {
    14         cout<<iter->first<<" "<<iter->second<<endl;
    15     }
    16     return 0;
    17 }
    View Code

    自定义排序方式

     1 #include <string>
     2 #include <iostream>
     3 using namespace std;
     4 struct CmpByKeyLength
     5 {
     6     bool operator()(const string &k1,const string&k2){
     7         return k1.length()<k2.length();
     8     }
     9 };
    10 int main()
    11 {
    12     map<string,int,CmpByKeyLength>mapStudent;
    13     mapStudent['nisan']=90;
    14     mapStudent['nisan']=70;
    15     mapStudent['nisan']=80;
    16     map<string,int>::iterator iter = mapStudent.begin();
    17     for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
    18     {
    19         cout<<iter->first<<" "<<iter->second<<endl;
    20     }
    21     return 0;
    22 }
    View Code

    ------>加油美好的一天

  • 相关阅读:
    eclipse中的项目无法在build/classes目录下生成.class字节码
    nginx的权限问题(Permission denied)解决办法
    application/x-www-form-urlencoded、application/json、multipart/form-data、text/xml简单总结
    jackson的使用和详解
    博客园自定义样式
    java基础
    k8s
    系统服务构建运维
    私有云技术
    工程文档编写
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/8945191.html
Copyright © 2020-2023  润新知