このコード スニペットでは、Update() はブール値を返します。false が返された場合は、ベクターから要素を削除したいと思います。
ただし、これによりデバッグ アサーションが失敗したという実行時エラーが発生します。式は「インクリメントできないベクトル反復子」です。
コード:
for(auto iter = someVector.begin(); iter != someVector.end(); ++iter){
if(!iter->get()->Update()) iter = someVector.erase(iter);
}
私も次のようにイテレータから減算しようとしました:
for(auto iter = particles.begin(); iter != particles.end(); ++iter){
if(!iter->get()->Update()) iter = --(particles.erase(iter));
}
...しかし、これにより「ベクトル反復子はデクリメントできません」という結果になります。
コードを意図したとおりに動作させるにはどうすればよいですか。Update() 関数が false を返したときにベクター要素が削除されるようにするには?