STL筆記之【map之移除元素】

//---------------------------------------------------------
// 移除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

相關文章
相關標籤/搜索