私が正しく理解していれば間違っていれば修正してください。リストは.NETの配列で実装されています。つまり、リスト内の項目を削除するとすべてのリストが再割り当てされますターンを意味するO(n)
)。リスト<T>を効率的に削除するには(C#)?
私は多くの弾丸を空中に飛ばしています.100個の弾丸を各フレームごとに数ピクセル移動させ、ゲーム内のオブジェクトとの衝突をチェックしてみましょう。私は衝突したすべての弾丸をリストから削除する必要があります。
は、だから私は、別の一時リストで衝突した弾丸を収集して、次の操作を行います。ループがO(n)
で、削除がO(n)
あるので
foreach (Bullet bullet in bulletsForDeletion)
mBullets.Remove(bullet);
、私は削除するO(n^2
)の時間を費やしています。
これを削除するには、より良い方法がありますか、それともより適切なコレクションがありますか?
申し訳ありません。私たちはすべてここで学びます。 –
実際に問題があるのですか、または時期尚早に最適化していますか? – Oded
実際の問題はありません.60fpsで動作します。このような操作がO(n^2)であってはならないため、私は間違ったことを書いているように感じました。 – OopsUser