Я пытаюсь сделать что-то вроде этого:
auto& myIndex = myMultiIndex.get<0>();
auto range = myIndex.equal_range(x);
for (auto iter = range.first; iter != range.second; ++iter) {
if (somePredicate) myIndex.erase(iter);
}
Конечно, это не работает, потому что итератор становится недействительным, как только мы удаляем элемент из контейнера. Также std::remove_if не работает, так как он изменяет и перезаписывает элементы в контейнере, что испортит другие индексы. Каков рекомендуемый способ сделать что-то подобное?
Спасибо!
iterator erase(iterator first,iterator last)
? - person n. 1.8e9-where's-my-share m.   schedule 15.08.2018