zoukankan      html  css  js  c++  java
  • STL -- map

    map是C++的一个标准容器,key-record的关系。

    1. map的构造函数

    map<string, int> mapstring;
    map<int, string> mapint;
    map<string, char> mapstring;
    map<char, string> mapchar;
    map<char, int> mapchar;
    map<int, char> mapint;

    2. map添加数据

    map<int, string> maplive;
    maplive.insert(pair<int, string>(102, "active"));
    maplive.insert(map<int, string>::value(type(321, "hai"));
    maplive[122] = "April";//map中最简单最常用的插入添加

    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;

    4. map中元素删除

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

    5. map中swap用法

      map中的swap不是一个容器的元素的交换,而是两个容器的交换。

    #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函数。

    #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 ) );
       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;
      
    }
      The original map m1 is:
      1 20
      2 50
      3 60
      4 40
      6 40
      7 30

    7. map中基本操作函数

    begin()返回指向map头部的迭代器

    clear()删除所有元素

    count()返回指定元素出现的次数

    empty()如果map为空则返回true

    end()返回指向map尾部的迭代器

    equal_range()返回特殊条目的迭代器对

    erase()删除一个元素

    find()查找一个元素

    get_allocator()返回map的配置器

    insert()插入元素

    key_comp()返回比较元素key的函数

    lower_bound()返回键值>=给定元素的第一个位置

    max_size()可以容纳的最大元素个数

    rbegin()返回一个指向map尾部的逆向迭代器

    rend()返回一个指向map头部的逆向迭代器

    size()返回map中元素个数

    swap()交换两个map

    upper_bound()返回键值>给定元素的第一个位置

    value_comp()返回比较元素value的函数

  • 相关阅读:
    PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键
    支付宝支付开发——当面付条码支付和扫码支付
    C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理
    ***微信 该连接无法访问问题解决办法
    JQuery 导入导出 Excel
    用PowerDesigner对现有的数据库反向工程建立E-R图
    js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
    微信网页第三方登录原理
    C# 添加Windows服务,定时任务
    微信公众平台开发(104) 自定义菜单扫一扫、发图片、发地理位置
  • 原文地址:https://www.cnblogs.com/yiyi-xuechen/p/4425955.html
Copyright © 2011-2022 走看看