jma*_*erx 2 c++ iterator vector
我认为以下代码可以工作,但是当目标小部件位于向量的末尾时,它会崩溃.
for(std::vector<AguiWidget*>::iterator it = children.begin();
it != children.end(); ++it)
{
if((*it) == widget)
it = children.erase(it);
}
Run Code Online (Sandbox Code Playgroud)
我想要它通过并删除它找到的小部件的任何实例.我知道这个方法是N ^ 2但是因为这是事件驱动的,所以很好.我只是不知道为什么会失败.当它,'它'==小部件.
谢谢
您可以使用erase-remove惯用法删除所有等于的元素widget.
children.erase(remove(children.begin(), children.end(), widget), children.end());
Run Code Online (Sandbox Code Playgroud)