学到这里,我们已经掌握map容器的基本知识了,增、改、查,但还没有学过删。本节将继续带领读者一起学习如何为map容器删除元素。
erase()是删除map容器内元素的主要函数,这里通过代码简单介绍如何通过erase()删除元素:
#include<iomanip> #include <iostream> #include <map> #include <string> using namespace std; /*erase()删除map内元素*/ void test() { map<string,string> mp{ {"C语言网","dotcpp.com"}, {"数据结构教程","https://www.dotcpp.com/course/ds/"}, {"C++教程","https://www.dotcpp.com/course/cpp/"}, {"Python教程","https://www.dotcpp.com/course/python/"}, {"Java教程","https://www.dotcpp.com/course/java/"}}; cout << "总共有5个k-v元素: \n"; for(auto it = mp.begin();it!=mp.end();++it)cout << "key=" <<setw(15)<< left << it->first << "value=" << it->second << '\n'; cout << '\n' ; /*erase(pos)参数为位置迭代器pos,删除其指向的key */ mp.erase(mp.begin()) ; cout << "删除mp按字典序升序排序后的第一个元素: \n"; for(auto it = mp.begin();it!=mp.end();++it)cout << "key=" <<setw(15)<< left << it->first << "value=" << it->second << '\n'; cout << '\n' ; /*erase(key)参数key,删除其指向的key */ mp.erase("Java教程"); cout << "删除指定key=Java教程: \n"; for(auto it = mp.begin();it!=mp.end();++it)cout << "key=" <<setw(15)<< left << it->first << "value=" << it->second << '\n'; cout << '\n' ; /*erase(first,last)删除区间[first,last)的元素*/ mp.erase(mp.begin(),--mp.end()) ; cout << "删除除最后一个元素外的所有元素: \n"; for(auto it = mp.begin();it!=mp.end();++it)cout << "key=" <<setw(15)<< left << it->first << "value=" << it->second << '\n'; cout << '\n' ; /*clear()*/ mp.clear(); cout << "全部清除后有元素:【" << mp.size() << "】个\n"; } int main() { test(); return 0; }
编译结果如下:
成功通过erase()删除元素
总结:单个元素清除时参数为位置迭代器或key,多个元素删除时用到区间删除,参数为两个位置迭代器,一键全清用到clear()。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程