Изменение boost::bimap в цикле
Я смотрю на boost::bimap, который кажется удобным во многих аспектах, но я столкнулся с проблемами при попытке изменить bimap в цикле.
Например,
bimap<int, multiset_of<int>> bm;
bm.insert({1, 1});
bm.insert({2, 1});
auto range = bm.right.equal_range(1);
for (auto iter = range.first; iter != range.second; ++iter) {
if (some_condition) {
bm.right.replace_key(iter, 3);
}
}
Здесь я пытаюсь заменить все вхождения 1 на правой стороне, которые удовлетворяют some_condition, на 3, но этот код не будет работать, так как replace_key испортит итератор, который я использую для цикла. Подобные проблемы существуют, когда я пытаюсь вставить / стереть узел в bimap. Каков рекомендуемый способ сделать это?