Изменение 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. Каков рекомендуемый способ сделать это?

0 ответов

Другие вопросы по тегам