Map常用操作——插入、查找、删除、遍历
程序员文章站
2022-06-20 21:03:22
...
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;
上一篇: iis创建用户隔离模式FTP站点的方法
下一篇: 链表的创建, 插入, 删除与查找
推荐阅读