相关疑难解决方法(0)

你可以在迭代它时从std :: list中删除元素吗?

我有代码看起来像这样:

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);
Run Code Online (Sandbox Code Playgroud)

我想在更新后立即删除非活动项目,以避免再次走过列表.但是如果我添加注释掉的行,当我到达时会出现错误i++:"List iterator not incrementable".我尝试了一些替代品,它们没有在for语句中增加,但我无法得到任何工作.

当你走std :: list时,删除项目的最佳方法是什么?

c++ list std

233
推荐指数
7
解决办法
21万
查看次数

有没有理由用C++中的for(; condition;)替换while(condition)?

好像

while( condition ) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

完全等同于

for( ; condition; ) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

有没有理由使用后者而不是前者?

c++ loops for-loop while-loop

5
推荐指数
5
解决办法
5413
查看次数

标签 统计

c++ ×2

for-loop ×1

list ×1

loops ×1

std ×1

while-loop ×1