//---------------------------------------------------------
// 移除map中知足條件的元素
//---------------------------------------------------------
// 1.建立map
map<int, string> mapTest;
mapTest.insert(map<int, string>::value_type(0, "0"));
mapTest.insert(map<int, string>::value_type(1, "1"));
mapTest.insert(map<int, string>::value_type(2, "2"));string
// 2.移除知足條件的元素
map<int, string>::iterator iter = mapTest.begin();
for (; iter != mapTest.end(); )
{
if (iter->second == "1")
{
mapTest.erase(iter++);
}
else
{
++iter;
}
}it
// 3.總結
map.erase(pos)是不返回pos的下一個迭代器的
注意if中的mapTest.erase(iter++);
而不是++iter
//---------------------------------------------------------
// 移除map中key爲某一值的元素
//---------------------------------------------------------
mapTest.erase(keyValue);
若是mapTest爲multimap,則會刪除key==keyValue的全部元素
若是在multimap中只想移除第一個key==keyValue的元素
則代碼應當如此
pos = mapTest.find(keyValue);
if (pos != mapTest.end())
{
mapTest.erase(pos);
}map