Vector 遍历移除的问题

Vector vec;
    for (int i = 0 ; i < 20 ; i++)
    {
        Sprite * spr = Sprite::create("image/p.png");
        spr->setTag(i);
        vec.pushBack(spr);
    }
    
    for (auto & obj : vec)
    {
        Sprite * spr = obj;
        int key = spr->getTag()%3;
        if(key == 0)
            vec.eraseObject(spr);
    }


```


如上代码;
当遍历是执行过if条件移除后继续遍历的话会bug
这是这种遍历方法有问题还是Vector不能这样的实时移除
求大神解惑

在vector里遍历移除的时候这样做好像是会有问题,因为你erase了之后,vector里面被移除的spirte后面的所有的sprite会自动往前移一位,这样下个循环的时候auto &obj : vec可能就有问题,我遍历移除的时候一般是这样写的:
for (auto it = vec.begin(); it != vec.end();){
Sprite *spr = obj;
int key = spr->getTag()%3;
if(key == 0){
it = vec.erase(it);
}
else{
it ++;
}
}

我也遇到了同样的问题, 我现在试试用别的遍历方式:joy:

这种遍历带移除的,可以考虑倒着遍历