我是靠谱客的博主 勤劳麦片,最近开发中收集的这篇文章主要介绍Map常用操作——插入、查找、删除、遍历1. 插入2. 查找3. 删除4. 遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  • 1. 插入
  • 2. 查找
  • 3. 删除
  • 4. 遍历

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;

最后

以上就是勤劳麦片为你收集整理的Map常用操作——插入、查找、删除、遍历1. 插入2. 查找3. 删除4. 遍历的全部内容,希望文章能够帮你解决Map常用操作——插入、查找、删除、遍历1. 插入2. 查找3. 删除4. 遍历所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部