考虑以下:
for (it = list.begin(); it != list.end(); ++it) {
if (!(*it)->alive) {
it = list.erase(it);
}
}
只要list.size() > 1
. 一旦列表只包含一个元素,就会调用擦除段错误。我假设是因为没有下一个元素。至少,这是我观察到的行为。有没有正确的方法来处理这个?也许是完全不同的方法?
如您所见,我不想立即清除列表。我只想在元素死亡时删除它们,这可以正常工作,直到它删除最后一个元素。