<map>的常用操作

    map的遍历可以通过迭代器实现,也可以用指针形式来实现,在前面已经说过了,不再重复。下面介绍一下map的常用操作

    1. 判断map容器中是否存在某一关键字,用map自带的成员函数count(),参数为关键字,返回值为int型数据。

       返回值为0或1,若存在返回1,不存在返回0。

    2. 在map容器里面查找某一数据,用成员函数find(),参数为关键字,返回一个迭代器,查找成功返回数据所在位置的迭代器,

       查找失败返回等于end的迭代器。

 下面展示一下count()、find()的用法,看代码 

 1 #include<iostream>
 2 #include<string>
 3 #include<map>
 4 using namespace std;
 5 int main()
 6 {
 7     map<int,string> mp;
 8     map<int,string>::iterator iter;
 9     mp.insert(pair<int,string>(1,"abc"));
10     mp.insert(pair<int,string>(2,"def"));
11     mp.insert(pair<int,string>(3,"ghi"));
12     iter=mp.begin();
13     int flag1=mp.count(2); //判断map里是否存在该关键字;让关键字做参数,返回int型,查找成功返回1,查找失败返回0
14     cout<<"flag1=1表示在map查找关键字2成功,flag1=0表示查找失败:flag1="<<flag1<<"\n";
15 
16     iter=mp.find(3);  //在map里查找数据,让关键字做参数;返回迭代器,查找成功返回数据所在位置的迭代器,查找失败返回等于end的迭代器
17     int flag2=(iter==mp.end());
18     cout<<"在map查找关键字3,flag1=0表示查找成功,flag1=1表示查找失败:flag2="<<flag2<<"  "<<iter->first<<"  "<<iter->second<<"\n";
19     return 0;
20 }

结果如下:

    3. 删除map中的数据

      删除的话要用erase()函数,它有三个重载了的函数。分别用迭代器来删除、用关键字来删除、也可以成片的删除数据。下面来演示一下

 1 #include<iostream>
 2 #include<string>
 3 #include<map>
 4 using namespace std;
 5 int main()
 6 {
 7     map<int,string> mp;
 8     map<int,string>::iterator iter,iter1;
 9     mp.insert(pair<int,string>(1,"abc"));
10     mp.insert(pair<int,string>(2,"def"));
11     mp.insert(pair<int,string>(3,"ghi"));
12     mp.insert(pair<int,string>(4,"jkl"));
13     mp.insert(pair<int,string>(5,"mno"));
14     mp.insert(pair<int,string>(6,"pqr"));
15     mp.insert(pair<int,string>(7,"stu"));
16     iter=mp.begin();
17     cout<<"-------第一次删除后剩余数据-------\n";
18     mp.erase(iter);    //用迭代器删除第一个数据,删除后之前的迭代器就会失效
19     for(iter=mp.begin();iter!=mp.end();iter++) //此时iter已失效,用的时候需要再重新赋值
20         cout<<iter->first<<"  "<<iter->second<<"\n";
21     cout<<"-------第二次删除后剩余数据-------\n";
22     mp.erase(5);    //按照关键字来删除数据
23     for(iter=mp.begin();iter!=mp.end();iter++) //此时iter已失效,用的时候需要再重新赋值
24         cout<<iter->first<<"  "<<iter->second<<"\n";
25     cout<<"-------第三次删除后剩余数据-------\n";
26     iter=mp.begin();
27     iter1=mp.end();
28     --iter1;
29     mp.erase(iter,iter1);  //删除除了最后一个数据之外的所有数据
30     for(iter=mp.begin();iter!=mp.end();iter++) //此时iter已失效,用的时候需要再重新赋值
31         cout<<iter->first<<"  "<<iter->second<<"\n";
32     return 0;
33 }

结果如下:

    4. 下面介绍一下map常用的成员函数

        push_back();向map容器的末尾位置添加字符

        push_pop(); 删除map容器里的末尾元素

        begin();返回一个指向容器中第一个元素的迭代器

        end();返回一个指向容器中最后一个元素的下一个位置的迭代器

        rebegin();反向迭代,返回指向最后一个元素的下一个位置的迭代器

        rend();  反向迭代,返回指向第一个元素的的迭代器

 

        at();此成员函数有参数,关键字是下标。作用类似于[ ]操作符,用来对指定下标位置的元素进行随机访问,可进行存取及修改操作

        size();返回map的尺寸,即map的大小 

        mp1.swap(mp2);交换容器mp1和mp2

        clear();清空当前容器

        empty();判断容器是否为空,为空返回1,非空返回0

posted @ 2020-04-28 16:21  和运气碰碰  阅读(696)  评论(0编辑  收藏  举报