zoukankan      html  css  js  c++  java
  • map基本用法

    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!
    1. map最基本的构造函数
       

       map<string , int > mapstring;//第一个为first变量类型,第二为second变量类型

    //格式:map<数据类型,数据类型 ,大小规则(可缺省即默认数学大小)>   变量名;

    2. map添加数据

       map<int ,string> maplive;  
       1.maplive.insert(pair<int,string>(102,"aclive"));
       2.maplive.insert(map<int,string>::value_type(321,"hai"));
       3, maplive[112]="April";//map中最简单最常用的插入添加!,即往关键字112中添加“April”(存在就修改,反之添加)


    3. map中元素的查找

       //find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。        
       map<int ,string >::iterator l_it;//迭代器
       l_it=maplive.find(112);
       if(l_it==maplive.end())
           cout<<"we do not find 112"<<endl;
       else 
    cout<<"wo find 112"<<endl; //调用方式: l_it->first,l_it->second;

    4,map中元素的删除

       //删除112;
       map<int ,string >::iterator l_it;
       l_it=maplive.find(112);
       if(l_it==maplive.end())
            cout<<"we do not find 112"<<endl;
       else
    
            maplive.erase(l_it);  //delete 112;

    5,map中 swap的用法:

      Map中的swap不是一个容器中的元素交换,而是两个容器交换;
      For example:
      #include <map>
      #include <iostream>
      using namespace std;
      int main( )
      {
          map <int, int> m1, m2, m3;
          map <int, int>::iterator m1_Iter;
          m1.insert ( pair <int, int>  ( 1, 10 ) );
          m1.insert ( pair <int, int>  ( 2, 20 ) );
          m1.insert ( pair <int, int>  ( 3, 30 ) );
          m2.insert ( pair <int, int>  ( 10, 100 ) );
          m2.insert ( pair <int, int>  ( 20, 200 ) );
          m3.insert ( pair <int, int>  ( 30, 300 ) );
          cout << "The original map m1 is:";
          for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
          cout << " " << m1_Iter->second;
          cout   << "." << endl;
          // This is the member function version of swap
          //m2 is said to be the argument map; m1 the target map
         m1.swap( m2 );
         cout << "After swapping with m2, map m1 is:";
         for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
                         cout << " " << m1_Iter -> second;
         cout  << "." << endl;
         cout << "After swapping with m2, map m2 is:";
         for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ )
                         cout << " " << m1_Iter -> second;
          cout  << "." << endl;
       // This is the specialized template version of swap
         swap( m1, m3 );
         cout << "After swapping with m3, map m1 is:";
         for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
                        cout << " " << m1_Iter -> second;
         cout   << "." << endl;
    }


    6.map的sort问题
     

      //Map中的元素是自动按key升序排序,所以不能对map用sort函数:
      //For example:
      #include <map>
      #include <iostream>
      using namespace std;
      int main( )
      {
         map <int, int> m1;
         map <int, int>::iterator m1_Iter;
         m1.insert ( pair <int, int>  ( 1, 20 ) );//1就是key同时也是first
         m1.insert ( pair <int, int>  ( 4, 40 ) );
         m1.insert ( pair <int, int>  ( 3, 60 ) );
         m1.insert ( pair <int, int>  ( 2, 50 ) );
         m1.insert ( pair <int, int>  ( 6, 40 ) );
         m1.insert ( pair <int, int>  ( 7, 30 ) );
         cout << "The original map m1 is:"<<endl;
         for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
                 cout <<  m1_Iter->first<<" "<<m1_Iter->second<<endl;
      
     }

    7.   map的基本操作函数
          

          //C++ Maps是一种关联式容器,包含“关键字/值”对
          begin()          返回指向map头部的迭代器
          clear()          删除所有元素
          count()          返回指定元素出现的次数
          empty()          如果map为空则返回true
          end()            返回指向map末尾的迭代器
          equal_range()    返回特殊条目的迭代器对
          erase()          删除一个元素
          find()           查找一个元素
          get_allocator()  返回map的配置器
          insert()         插入元素
          key_comp()       返回比较元素key的函数
          lower_bound()    返回键值>=给定元素的第一个位置 即区间[it,end())中it位置
          max_size()       返回可以容纳的最大元素个数
          rbegin()         返回一个指向map尾部的逆向迭代器
          rend()           返回一个指向map头部的逆向迭代器
          size()           返回map中元素的个数
          swap()           交换两个map
          upper_bound()    返回键值>给定元素的第一个位置 即区间[begin(),it)中it位置
          value_comp()     返回比较元素value的函数
  • 相关阅读:
    【MySQL】查看数据库所占空间大小
    Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多?
    Hbase 大表快速count
    redis击穿,穿透,雪崩以及解决方案
    elasticsearch和lucene的关系以及elasticsearch的核心概念
    Java 序列化 之 Serializable
    win10+virtualBox(CentOS7)java 环境搭建之 mysql8安装
    win10+virtualBox(CentOS7)java 环境搭建之 jdk 1.8安装
    win10+virtualBox(CentOS7)java 环境搭建之 网络设置
    joplin for Arch Linux
  • 原文地址:https://www.cnblogs.com/shenyuling/p/9952634.html
Copyright © 2011-2022 走看看