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"));

// 2.移除滿足條件的元素
map<int, string>::iterator iter = mapTest.begin();
for (; iter != mapTest.end(); )
{
 if (iter->second == "1")
 {
  mapTest.erase(iter++);
 }
 else
 {
  ++iter;
 }
}

// 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);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM