1.删除value是大写的map
#include<bits/stdc++.h>
using namespace std;
//当我们删除了 it_pos 之后,it_pos 这个迭代器已经失效了,对其进行 it_pos++ 操作,
//就是未知的操作,会引起异常。所以我们应该在删除 it_pos 之前就对其进行 ++。改成下面的代码就可以解决问题了。
//c++ 11 之后,删除迭代器会返回指向下一个位置的迭代器
void erase_upper(std::map<int, char>& m) {
map<int ,char>::iterator m1_Iter;
for( m1_Iter = m.begin(); m1_Iter!=m.end(); ){
if( m1_Iter->second >= 'A' && m1_Iter->second <= 'Z' ){
m1_Iter = m.erase(m1_Iter);
//m.erase(m1_Iter++);
}else{
m1_Iter++;
}
}
map<int ,char>::iterator m2_Iter;
for( m2_Iter = m.begin(); m2_Iter != m.end(); m2_Iter++ ){
cout<<m2_Iter->second;
}
}
int main()
{
map<int, char> m ;
m[1] = 'a';
m[2] = 'B