15
A
回答
14
如果我理解正確,這些值可以出現在任何鍵下。如果是這種情況,你必須迭代你的multimap並擦除特定的值。
typedef std::multimap<std::string, int> Multimap;
Multimap data;
for (Multimap::iterator iter = data.begin(); iter != data.end();)
{
// you have to do this because iterators are invalidated
Multimap::iterator erase_iter = iter++;
// removes all even values
if (erase_iter->second % 2 == 0)
data.erase(erase_iter);
}
1
由於C++ 11,std::multimap::erase返回最後刪除的元素下面的迭代器。
所以,你可以稍微更乾淨改寫尼古拉的回答,而不需要介紹當地erase_iter變量:
typedef std::multimap<std::string, int> Multimap;
Multimap data;
for (Multimap::iterator iter = data.begin(); iter != data.end();)
{
// removes all even values
if (iter->second % 2 == 0)
iter = data.erase(iter);
else
++iter;
}
(參見回答this question)
相關問題
- 1. 如何優化從multimap擦除
- 2. Multimap之擦除不起作用
- 3. 擦除和刪除圖像
- 4. 擦除刪除成語在嵌套容器中刪除? (刪除外部的; C++ STL)
- 5. 根據鍵值擦除multimap中的元素?
- 6. 擦除價值
- 7. C++ STL矢量深度擦除
- 8. 刪除()STL多繼承
- 9. STL從列表中刪除
- 10. 併發multimap放入和刪除
- 11. 發現和擦除重複和擦除值在另一矢量
- 12. 與NA擦除重複值
- 13. 奇怪擦除
- 14. 擦除元素
- 15. 通過擦除
- 16. 擦除詳細?
- 17. STL multimap關聯容器
- 18. 關於C++ STL列表類方法的擦除()
- 19. 什麼是非無效STL擦除的安全等價物?
- 20. STL向量擦除後無效的迭代器
- 21. 執行remove_if()後擦除()
- 22. stl容器如何被刪除?
- 23. lambda + for_each +在STL容器上刪除
- 24. STL優先級隊列 - 刪除項目
- 25. STL列表中刪除項目
- 26. 從硬盤安全地刪除/擦除MySQL數據
- 27. 擦除表格視圖單元格中的刪除按鈕
- 28. C++擦除 - 刪除成語不能正常工作?
- 29. C++在for_each期間從擦除元素中刪除元素
- 30. 如何在OpenGL中刪除/擦除特定的多邊形?
一個可能的修復可能是交換鍵和值,這可能不是所有閱讀本文的選項,但可能適合一些閱讀。 – dangerousdave 2012-10-12 11:07:05