【发布时间】:2010-10-10 10:00:34
【问题描述】:
我的代码如下所示:
for (std::list<item*>::iterator i=items.begin();i!=items.end();i++)
{
bool isActive = (*i)->update();
//if (!isActive)
// items.remove(*i);
//else
other_code_involving(*i);
}
items.remove_if(CheckItemNotActive);
我想在更新后立即删除不活动的项目,以避免再次遍历列表。但是,如果我添加注释掉的行,当我到达i++ 时会出现错误:“列表迭代器不可递增”。我尝试了一些在 for 语句中没有增加的替代方法,但我什么也做不了。
当您在 std::list 中行走时删除项目的最佳方法是什么?
【问题讨论】:
-
我还没有看到任何基于向后迭代的解决方案。我发布了one such。