我尝试的所有操作都出现语法错误。有人可以告诉我用什么代替评论吗?这是我第一次使用 vector 。
EntityList 是 Entity 类的静态 vector 。
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<_Myvec>”
我看到的所有示例都使用 int 作为参数,所以我不知道该怎么做。
此外,由于 vector 中的元素在删除后向下移动,我是否应该在删除项目后递减 i 以便它再次执行具有相同值的循环?或者有更优雅的方法吗?
最佳答案
你可以试试:
Entity::EntityList.erase(Entity::EntityList.begin() + i);
是的,你应该减少 i。
关于c++ - 在这种情况下如何从 vector 中删除一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369568/