我尝试的所有内容都出现语法错误。有人可以告诉我用什么代替评论吗?这是我第一次使用向量。

EntityList是Entity类的静态向量。

for(int i = 0;i < (int)Entity::EntityList.size();i++) {
    if(!Entity::EntityList[i]) continue;

    if(Entity::EntityList[i]->isDead){
        //Erase from vector
        //Decrement i?
    }

    Entity::EntityList[i]->OnLoop();
}


我应该用什么代替评论?我已经尝试了一些方法,但是没有任何效果。例如,Entity :: EntityList.erase(i);不起作用。我收到以下错误,我不明白:

无法将参数1从'int'转换为'std :: _ Vector_const_iterator '

我看到的所有示例都将ints用作参数,因此我不知道该怎么做。

另外,由于向量中的元素在删除后会向下移动,因此删除项目后是否应该将i减1,以便它再次以相同的值执行循环?还是有一种更优雅的方式呢?

最佳答案

您可以尝试:

Entity::EntityList.erase(Entity::EntityList.begin() + i);


是的,你应该减一。

关于c++ - 在这种情况下,如何从 vector 中删除项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10369568/

10-11 19:09