如何从boost :: multi_index中删除多个元素?

时间:2018-08-15 01:06:23

标签: c++ boost-multi-index

我正在尝试做这样的事情:

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也不起作用,因为它修改并覆盖了容器中的元素,这会弄乱其他索引。建议做这种事情的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

for (auto iter = range.first; iter != range.second;) {
    if (somePredicate) iter = myIndex.erase(iter);
    else ++iter;
}