Map常用操作——插入、查找、删除、遍历

Map常用操作——插入、查找、删除、遍历

1. 插入

四种插入方法
方法一:pair

map<int, int> mp;
mp.insert(pair<int,int>(1, 2));

方法二:make_pair

map<int, int> mp;
mp.insert(make_pair<int,int>(2,3));

方法三:value_type

map<int, int> mp;
mp.insert(map<int, int>::value_type(3,4));

方法四:[]

map<int, int> mp;
mp[4] = 5;

四种方法异同:
前三种方法当出现重复键时,编译器会报错,有的可能不会报错但是会忽视重复键插入,而第四种方法,当键重复时,会覆盖掉之前的键值对。

2. 查找

方法一:[]

map<int, int> mp;
cout << mp[1] << endl;
Mp[1] = 2;
cout << mp[1] << endl;

第一句输出为0,第二句输出为2.
下标索引的机制:用下标访问map中不存在的元素时,将导致向map中添加该下标所指向的新元素,其值会根据类型默认值或默认构造函数进行初始化。
方法二:map.at()

map<int, int> mp;
map[1] = 0;
cout << mp.at(1) << endl;
cout << mp.at(2) << endl;

第一句输出为0,第二句抛出异常。.
at函数机制:存在则正常输出,不存在返回map.end().
方法三:count()和find()

map<int,int> mp;
    mp[1] = 1;
     map<int, int>::iterator iter=mp.find(1);
     if(iter != mp.end()){
          cout<<"Found, the value is "<<iter->second<<endl;
     }else{
          cout<<"Do not found"<<endl;
    }

map::find(k),如果map中存在按k索引的元素,则返回指向该元素的iterator;如果不存在则返回end()。
map::count(k),返回map中k出现的次数,为0当然就表示不存在,只能用来判断k是否存在。

3. 删除

map定义了四个删除元素的方法

iterator erase(iterator it); //通过一个条目对象删除
iterator erase(iterator first, iterator last);//删除范围[first, last)内对象
size_type erase(const Key& key); //通过关键字删除
map的清空函数clear()就相当于 Map.erase(Map.begin(), Map.end());

4. 遍历

前序遍历 [ begin(), end() )

map<int, int> mp;
for (map<int, int>::iterator iter = mp.begin(); iter != mp.end(); iter ++)
    cout << mp->first << " " << mp->second << endl;

后序遍历 [ rbegin(), rend() )

map<int,string> mp;
for (map<int, int>::iterator iter = mp.rbegin(); iter != mp.rend(); iter ++)
    cout << mp->first << " " << mp->second << endl;
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值