在我的游戏代码中,我想从a中删除一些元素list,
这些元素发生在循环中.我遇到的唯一问题是,当我使用时,
list::erase我必须在该函数之后断开,因为我认为
它list变得"过时"了.这会导致一点点闪烁,我想
尝试删除它.
目前的代码是这样的:
for(list<Arrow*>::iterator it = arrows.begin(); it != arrows.end(); it++)
{
Arrow* a = (*it);
if(a->isActive() == true)
{
a->update();
}
else
{
arrows.erase(it);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您!
编辑:对不起,我对矢量和列表感到困惑.得到了答案,谢谢!
你应该做:
it = arrows.erase(it);
Run Code Online (Sandbox Code Playgroud)
//
list<Arrow*>::iterator it = arrows.begin();
while (it != arrows.end())
{
Arrow* a = (*it);
if(a->isActive())
{
a->update(); ++it;
}
else{ // delete (a); ???
it=arrows.erase(it);}
}
Run Code Online (Sandbox Code Playgroud)