大佬们,求教这段代码是不是有点bug?

auto a = getPropNameFromType(type);
for (auto &i : tank->existProps)
{
if (i->getType() == type)
{
tank->gameLayer->EX_RemoveProp(a, false);
//tank->existProps.eraseObject(i);
}
}

其中如果把注释去掉就会报错, 说是STL中的_Mycont是nullptr,代码中的existProps是继承Sprite类的对象的Vector

这样肯定有问题的,stl一边遍历一边删除不是这么搞的,有三种方式可以做这件事,1 逆序遍历,删除完,后面的所有元素往前移动1位 ,2 用迭代器for循环的时候it++ 改为it = tank->existProps.eraseObject(i); 3. stl erase remove_if 函数联合使用

谢谢, 我用第二种方法解决了:grinning:

最优雅的还是第三种方式