我正在尝试做这样的事情:
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也不起作用,因为它修改并覆盖了容器中的元素,这会弄乱其他索引。建议做这种事情的方法是什么?
谢谢!
答案 0 :(得分:0)
for (auto iter = range.first; iter != range.second;) {
if (somePredicate) iter = myIndex.erase(iter);
else ++iter;
}