• C++ 之关联容器 map


    标准库定义了四种关联容器:map是其中之一(另外还有set、multimap、multiset)。map的元素以键-值(key-value),在学了顺序容器之后,再学习关联容器,就比较比较好理解了。

    map类型,可以说是键-值对的集合,每一个键都与一个或多个值相关联。

    利用它可以构造多钟函数:

    map<string , int >   a;

    map<char ,int>   b; 

    map<srting ,char >  c;

    map<int,vector<int> > d;       等等

    关于使用map函数的一些基本操作,不想用文字去多废话,直接看程序吧;

    有关   插入数据   使用迭代器   查找    删除   获取长度     的基本操作:

     1 #include<iostream>
     2 #include<map>
     3 using namespace std;
     4 int main(){
     5     map<int,int> m;
     6    //定义迭代器
     7     map<int,int>::iterator  mIter; 
     8     //插入数据方法1
     9     m.insert(pair<int,int> (1,20) );
    10     m.insert(pair<int,int> (4,20) );
    11     m.insert(pair<int,int> (5,20) );
    12     //法2
    13     m.insert(map<int,int>::value_type (7,6) );
    14     //法3  类似数组
    15     m[8]=9;
    16     
    17     //查找与清除,均是利用到健值
    18     map<int,int>::iterator  a = m.find(1);
    19     if(a!=m.end()){
    20         m.erase(a);
    21     }
    22     for(mIter = m.begin();mIter!=m.end();mIter++)
    23         cout<<mIter->first<<" "<<mIter->second<<endl;
    24     //获取长度
    25     cout<<m.size()<<endl;
    26     return 0;
    27 }

    值得注意一点,关联容器会自己帮你排序,排序是根据key(键)的大小,这一点它比顺序容器要好用用一些,还有就是因为这个原因,你map里面所定义的key(键)一定是要可以比较大小的类型。

    修改

     1 #include<iostream>
     2 #include<map>
     3 #include<string>
     4 using namespace std;
     5 int main(){  
     6     map<char ,string>  n;
     7     map<char ,string>::iterator it;
     8     map<char ,string>::value_type   num1('1',"xioaming");
     9     n.insert(num1);
    10     n['2'] = "xiaoli";
    11     //遍历修改,虽说只有俩元素
    12     for(it=n.begin();it!=n.end();it++)
    13     {
    14             it->second="xiaoqiu";
    15             cout<<it->first<<endl;
    16                 cout<<it->second<<endl;
    17     }
    18             return 0;
    19 }

    最后在加上一个书本上的一个计算单词个数的程序

     1 #include <iostream>
     2 #include <map>
     3 #include <string>
     4 using namespace std;
     5 int main()
     6 {
     7     string s;
     8     map<string, int> counters;    
     9     while (cin >> s)   // 读取单词并且计数
    10         ++counters[s];
    11     for (map<string, int>::const_iterator it = counters.begin();it != counters.end(); ++it) {
    12         cout << it->first << "	" << it->second << endl;
    13     }
    14     return 0;
    15 }
  • 相关阅读:
    Python多线程爬虫爬取电影天堂资源
    BGP协议初探
    dubbo序列化hibernate.LazyInitializationException could not initialize proxy
    Spring Boot打包war jar 部署tomcat
    HSSFClientAnchor 参数说明
    attempt to create delete event with null entity
    解决BUG:CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default
    Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法
    visual studio 2015 开发android
    ASP.NET用QQ,网易发送邮件以及添加附件
  • 原文地址:https://www.cnblogs.com/LZYY/p/3242632.html
Copyright © 2020-2023  润新知