n個以上の複雑さを抑えながら、ソートされたベクトルから要素を消去する必要があります。私はvector . erase
の方法を知っていますが、それを消去する方法はありますが、その複雑さはnです。私はちょうど最後の要素でその構造要素を書き換えることができますし、ポップバックを使用して定数でなければならない最後のメソッドを削除することができますが、それはソートされないので、私は再びそれを並べ替える必要があります。この問題を解決して複雑さを下回ることさえ可能ですか?<n個の複雑さを持つベクトルの要素を消去する
答えて
ソートが必要なので、std::vector
(私が知る限り)の解決策はありません。しかし、std::vector
はあなたのケースに適したコンテナではないようです。 std::list
はあなたのための1つのオプションです(より良いかもしれません)。この基準から
:http://www.cplusplus.com/reference/list/list/erase/
複雑
消去された要素の数に線形(破壊)。
これは、デストラクタをN回呼び出すことを意味し、Nは削除されるアイテムの数です。したがって、データ構造をソートしたままで、高性能で要素を消去することができれば、削除された項目の数は直線的になります(std::list
アイテム数ではなく)
答えをありがとう。 – kvway
ベクトルを別のコンテナ(例えば、マルチセットなど)で置き換える方がよいでしょうか。
セット/マルチセットを使用している@kvwayはおそらくあなたが必要とするものです。なぜならリストでは1つの要素にアクセスするコストがO(n)あるからです。 – ead
- 1. 消去を使ってベクトルから要素を消去する
- 2. C++消去ベクトル要素
- 3. STLベクトルの偶数インデックスの重複要素を消去する
- 4. ベクトルから要素を消去すると、要素に存在するすべての要素ベクトルも消去されますか?
- 5. アルゴリズムでベクトル内の特定の要素を消去する
- 6. C++ベクトル要素の消去と新しいベクトルの作成
- 7. オブジェクトのベクトルから要素を消去する方法は?
- 8. 複雑なオブジェクトを消去する
- 9. すでにn個の要素を含むバイナリヒープにn個の要素を挿入する漸近的な時間の複雑さ
- 10. 消去要素
- 11. 消去要素
- 12. 構造体ベクトルの要素を消去します
- 13. 多次元ベクトルから要素を消去する
- 14. ベクトルのn個の最小要素のインデックスを見つける方法
- 15. n個の要素を持つ配列の最大数
- 16. 私は要素のベクトルを持つベクトル
- 17. O(1)、O(n log n)、O(log n)の複雑さを持つアルゴリズムの例
- 18. O(n)時間の複雑さを持つN-queenについての説明?
- 19. (非重複移動)ベクトル内のn個の要素の平均値
- 20. n個の要素を含むベクトルからm個の要素をランダムに選択します。
- 21. 与えられたN個の要素を持つBSTを構築するのはO(n lg n)ですか?
- 22. N個の非零要素を持つランダムなスパース行列を生成する
- 23. ベクトルの要素を削除する方法。 (消去は機能しません)
- 24. ベクトルの要素を消去して他の要素の条件をチェックする方法
- 25. 子要素をn個取得する
- 26. リプレイ別個の要素を持つサブジェクト
- 27. CUDAを使ってM個の要素からN個の最大要素を得るにはどうすればいいですか?N << M?
- 28. 複雑さ(N *(N-1)/ 2)
- 29. ベクトルのN個の要素の中からランダムなものを選ぶ
- 30. JavaScript - m個の要素を持つn個の配列から組み合わせを生成する
できません。どちらかというと、別のデータ構造を使用するb))一括して要素を削除する(erase-removeイディオムを参照)c)要素を未使用のものとしてマークする – milleniumbug
何らかの理由で未使用の要素をマークすると、 。 – kvway
変更を行う前に、**パフォーマンスを測定する**ことを確認してください。現代のハードウェアでは、他のコンテナタイプよりも優れているため、驚くほど大きなNが必要になることがよくあります。 –