map 映射

概念:

map就是从键(key)到值(value)的映射。因为重载了[]运算符,map像是数组的“高级版”。
例如可以用一个map<string, int> month_name 来表示“月份名字到月份编号”的映射
然后用month_name["July"] = 7 这样的方式来赋值

基本操作函数:

     C++ maps是一种关联式容器,包含“关键字/值”对

  •      begin()         返回指向map头部的迭代器
  •      clear()        删除所有元素
  •      count()         返回指定元素出现的次数
  •      empty()         如果map为空则返回true
  •      end()           返回指向map末尾的迭代器
  •      equal_range()   返回特殊条目的迭代器对
  •      erase()         删除一个元素
  •      find()          查找一个元素
  •      get_allocator() 返回map的配置器
  •      insert()        插入元素
  •      key_comp()      返回比较元素key的函数
  •      max_size()      返回可以容纳的最大元素个数
  •      rbegin()        返回一个指向map尾部的逆向迭代器
  •      rend()          返回一个指向map头部的逆向迭代器
  •      size()          返回map中元素的个数
  •      swap()           交换两个map
  •      lower_bound()   返回键值>=给定元素的第一个位置
  •      upper_bound()    返回键值>给定元素的第一个位置
  •      value_comp()     返回比较元素value的函数

 -----------------------------------------------------------------------------------------  

   map<int,string> a;//声明 
-----------------------------------------------------------------------------------------    
    
    a.insert(pair<int,string>(2,"bbb"));//第一种插入方式 
    a.insert(pair<int,string>(2,"222"));//不会覆盖 
    a.insert(map<int, string>::value_type (1,"aaa"));//第二种插入方式   
    a.insert(map<int, string>::value_type (1,"111"));//不会覆盖 
    a[3]="ccc";//第三种插入方式 
    a[3]="333";//会覆盖    
-----------------------------------------------------------------------------------------    
    
    int n=a.size();//map的大小
-----------------------------------------------------------------------------------------
    
    map<int, string>::iterator iter1; //迭代器遍历 
    for(iter1=a.begin();iter1!=a.end();iter1++)//begin和end:第一个、最后一个加一 
        cout<<iter1->first<<' '<<iter1->second<<endl;//first和second 
    
    map<int,string>::reverse_iterator iter2;//反向迭代器遍历 
    for(iter2=a.rbegin();iter2!=a.rend();iter2++)//rbegin和rend: 最后一个、第一个减一 
        cout<<iter2->first<<' '<<iter2->second<<endl;//first和second 
        
    for(int i=1;i<=n;i++)//数组遍历 
        cout<<i<<" "<<a[i]<<endl;
        
    cout<<a[2]<<endl;//直接输出 
-----------------------------------------------------------------------------------------
   
    iter1=a.find(3);//通过find查找 
    if(iter1!=a.end())  
       cout<<"Find, the value is "<<iter1->second<<endl;  
    else  
       cout<<"Do not Find"<<endl;  
-----------------------------------------------------------------------------------------
     
    //iterator erase(iterator it);//通过一个条目对象删除
    //iterator erase(iterator first,iterator last)//删除一个范围
    //size_type erase(const Key&key);//通过关键字删除
    //clear()就相当于a.erase(a.begin(),a.end());   
    iter1=a.find(1);  
    a.erase(iter1);//如果要删除1,用关键字删除 
    int x=a.erase(1);//如果删除了会返回1,否则返回0   
    a.erase(a.begin(),a.end()); //用迭代器,成片的删除相当于clear   

-----------------------------------------------------------------------------------------    

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱吃狮子头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值