map中删除元素的操作一般是针对特定的键,那么对于特定的值,是如何进行删除操作呢?
#include <iostream>
#include <map>
#include <string>
using namespace std;
void remove_elements(std::map<std::string,int> &m)
{
if(m.size() == 0){
return ;
}
map<string,int>::iterator it;
for(it=m.begin();it!=m.end();){
if (it->second == 10){
m.erase(it++);
}
else{
it++;
}
}
}
int main()
{
map<string,int> m;
string key;
int val =0;
while(cin>>key>>val){
m[key] = val;
}
remove_elements(m);
map<string,int>::iterator it;
for(it=m.begin();it!=m.end();it++){
cout<<it->first<<" "<<it->second<<endl;
}
}
简要的分析一下,map中有四种插入操作,这里使用的是“[]”。删除的时候,注意配合对迭代器it这个指针的使用;顺便提一下,while(cin>>)这种退出循环的方法是 换行之后 Ctrl+D ,然后Enter就可以了。如果使用Ctrl+c会出莫名其妙的bug
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6FEVONzYU50MJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2czNxIjN1ETMyIDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)