C++ STL函数 map (henu.hjy)

map是一个映射,具有数组不具有的优势(注释1)

在代码开头注释中解释了map中的常用函数以及遍历写入方法。

一下代码请参考:

#include <iostream>
#include <map>

using namespace std;

//map 映射 任何基本类型(包含STL容器)映射到任何基本类型(包含STL容器)
//map<typename1,typename2> mp;
//map元素访问两种方式
//(1)下标访问 map中的键是唯一的 map<key>
//(2)迭代器访问 map<typename1,typename2>::iterator it = mp.begin();
//   可用 it->first 访问键值     it->second 访问值 (输出时会以键的顺序从大到小进行排序)
//mp.find(key);返回映射的迭代器
//删除单个键值的两种方式
//(1)mp.erase(it); it为删除元素的迭代器
//(2)mp.erase(key);key为欲删除的映射的键
//删除区间内元素的方式:
//mp.erase(mp.find(i),mp.find(j)); 映射范围[first,end)
//mp.size();为键值对个数
//mp.clear();清空元素个数


int main()
{
    map<char,int> mp;
    mp['b'] = 2;
    mp['a'] = 3;
    mp['c'] = 1;
    mp['d'] = 4;
    mp['e'] = 0;
    for(map<char,int>::iterator it = mp.begin();it!=mp.end();it++){
        cout<<it->first<<" "<<it->second<<endl;
    }
    cout<<"直接通过find来读"<<mp.find('b')->first<<" "<<mp.find('b')->second<<endl;
    map<char,int>::iterator it = mp.find('c');
    cout<<"通过迭代器来读映射"<<it->first<<" "<<it->second<<endl;
    mp.erase(it);//或者 mp.erase('c');
    mp.erase(mp.find('d'),mp.find('e'));//由于map内部有序,所以必须按键顺序删除,即e不能变成a,否则无线循环
    for(map<char,int>::iterator it = mp.begin();it!=mp.end();it++){
        cout<<it->first<<" "<<it->second<<endl;
    }
    cout<<"剩余键值对数:"<<mp.size()<<endl;
    mp.clear();
    cout<<"清空后剩余键值对数:"<<mp.size()<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值