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. C++找到並擦除multimap元素
- 2. 如何優化從multimap擦除
- 3. Multimap之擦除不起作用
- 4. STL「擦除 - 刪除」成語:爲什麼不「調整大小 - 刪除」?
- 5. 擦除和刪除圖像
- 6. 在C++中刪除特定鍵的條目STL multimap
- 7. 擦除刪除成語在嵌套容器中刪除? (刪除外部的; C++ STL)
- 8. 根據鍵值擦除multimap中的元素?
- 9. 擦除價值
- 10. 擦除值
- 11. C++ STL矢量深度擦除
- 12. STL矢量擦除不工作
- 13. 使用C++中的擦除函數刪除stl列表中的對象
- 14. XNA擦除/刪除紋理2D
- 15. 刪除並擦除一個iter?
- 16. 刪除/從STD擦除::列表
- 17. 矢量::擦除(刪除(....))不工作
- 18. 使用擦除和刪除從字符串中刪除字符
- 19. STL從列表中刪除
- 20. STL地圖不會刪除
- 21. C++ STL刪除錯誤
- 22. 刪除()STL多繼承
- 23. C++ STL-like Bidirectional Multimap
- 24. 併發multimap放入和刪除
- 25. 從multimap中完全刪除元素(C++)
- 26. 發現和擦除重複和擦除值在另一矢量
- 27. 與NA擦除重複值
- 28. 擦除或擦除LDAP記錄:如何?
- 29. 我想從JAVA中的MultiMap(org.apache.commons.collections.MultiMap)中刪除單個值
- 30. STL multimap關聯容器
一個可能的修復可能是交換鍵和值,這可能不是所有閱讀本文的選項,但可能適合一些閱讀。 – dangerousdave 2012-10-12 11:07:05