我有STL Multimap,我想从地图中删除具有特定值的条目,我不想删除整个密钥,因为该密钥可能映射到其他所需的值。
请帮助。
答案 0 :(得分:16)
如果我理解正确,这些值可以出现在任何键下。如果是这种情况,您将不得不迭代多图并删除特定值。
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 :(得分:1)
从C ++ 11开始, std::multimap::erase 在最后一个被删除的元素之后返回一个迭代器。
因此,您可以稍微干净地重写Nikola的答案,而无需引入本地erase_iter变量:
UIAlertView
(另见this question的答案)