私が試したすべての文法エラーが発生します。誰かがコメントの代わりに何を置くべきか教えてもらえますか?これは私の初めてのベクトル作業です。このような状況でベクターからアイテムを削除するにはどうすればよいですか?
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);動作しません。私は理解していない、次のエラーを取得:
は、私はパラメータの使用int型を参照してください「のstd :: _ Vector_const_iterator < _Myvec>」
すべての例に「int型からパラメータ1を変換することはできません、私は何をすべきか分からない。
また、削除後にベクトルの要素がシフトダウンされるため、項目を削除した後にiを減らして同じ値のループを再度実行する必要がありますか?それとももっと優雅なやり方ですか?
'int'引数を使って' std :: vector :: erase'の例を実際に見た場合、それらは間違っています。 *イテレータ*が必要です。 http://www.cplusplus.com/reference/stl/vector/erase/ – jamesdlin