【发布时间】:2013-02-25 13:08:43
【问题描述】:
我正在使用std::multimap
std::multimap<string,string> map;
它包含以下元素
1 2
2 3
3 2
1 2
1 0
我想用 X 替换所有的 1 和 2。我在 google 中搜索了很长时间,但没有得到结果。我试过了
for(it=mmap.begin();it!=mmap.end();it++)
{
if(it->first == "1" || it->first == "2")
{
key = it->second;
it.erase(it);
mmap.insert(pair<string,string>("X",key));
}
}
但结果错误。我知道大小每次都会变化,当我们插入元素时,元素会被插入到最后,这反过来又结束了 for 循环。有没有其他办法摆脱这种情况?
【问题讨论】:
-
该代码无法编译。
-
参见
std::multimap::lower_bound()以及其中指向std::multimap::upper_bound()的链接参考。他们会得到你正在寻找的范围,尽管我质疑你在像这样枚举它的同时修改地图的愿望。