C++map中erase方法的使用在不同版本的编译器里面使用不一样,一般性的使用方法如下:
//erase方法调用————循环中局部删除某些元素
std::map<int, int> b;
b[1] = 5;
b[2] = 6;
b[3] = 7;
b[4] = 8;
for (std::map<int, int>::iterator iter = b.begin(); iter != b.end();)
{
if (iter->first % 2 == 0)
{
//iter = b.erase(iter);//这个只有在C++11才能有效
b.erase(iter++);//这个是旧版的也有效(注意必须是要这样的形式,b.erase(iter), i++;的形式都编译不通过)
}else
++iter;
}
}
局部删除b里面关键字为奇数的记录;
for (auto x : b)
cout << x.first << " " << x.second << endl;
运行结果如下