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

How to remove multiple elements from a boost::multi_index?

本文关键字:删除 元素 index multi      更新时间:2023-10-16

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

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

谢谢!

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