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