我认为下面的代码可以工作,但是当目标小部件位于向量末尾时它会崩溃。
for(std::vector<AguiWidget*>::iterator it = children.begin();
it != children.end(); ++it)
{
if((*it) == widget)
it = children.erase(it);
}
我希望它遍历并删除它找到的小部件的任何实例。我知道这个方法是 N^2 但由于这是事件驱动的所以没问题。我只是不知道为什么这会失败。当它出现时,'it' == widget。
Thanks
您可以使用擦除删除惯用语来擦除all等于的元素widget
.
children.erase(remove(children.begin(), children.end(), widget), children.end());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)