zoukankan      html  css  js  c++  java
  • <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<<"
    ";
    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<<"
    ";
    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<<"-------第一次删除后剩余数据-------
    ";
    18     mp.erase(iter);    //用迭代器删除第一个数据,删除后之前的迭代器就会失效
    19     for(iter=mp.begin();iter!=mp.end();iter++) //此时iter已失效,用的时候需要再重新赋值
    20         cout<<iter->first<<"  "<<iter->second<<"
    ";
    21     cout<<"-------第二次删除后剩余数据-------
    ";
    22     mp.erase(5);    //按照关键字来删除数据
    23     for(iter=mp.begin();iter!=mp.end();iter++) //此时iter已失效,用的时候需要再重新赋值
    24         cout<<iter->first<<"  "<<iter->second<<"
    ";
    25     cout<<"-------第三次删除后剩余数据-------
    ";
    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<<"
    ";
    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

  • 相关阅读:
    maven项目install时候一直报错,检查Maven-javadoc-plugin声明错误(Java 8 配置Maven-javadoc-plugin)或者是:警告: @throws 没有说明
    maven-gpg-plugin:1.2:sign (sign-artifacts) on project jdbc-pool: Cannot obtain passphrase in batch mode或者是Plugin execution not covered by lifecycle configuration
    org.eclipse.jdt.internal.compiler包下的类找不到
    Java finally语句到底是在return之前还是之后执行?
    lamp环境编译安装curl扩展
    PHP使用CURL获取302跳转后的地址实例
    php之curl设置超时实例
    php 使用curl 将文件上传
    PHP中CURL方法curl_setopt()函数的一些参数
    基于PHP的cURL快速入门
  • 原文地址:https://www.cnblogs.com/buanxu/p/12794519.html
Copyright © 2011-2022 走看看