unordered_map
コンテナに指定されたキーのあるアイテムがあるかどうかを判断する最速の方法は何ですか?unordered_map:find()またはcount()のどちらが高速ですか?
14
A
答えて
13
彼らは同等の性能について持っているでしょう。あなたは何をしようとしているのかを最もよく表すアルゴリズムを使用するべきです。
詳細については、count()
はfind()
を使用して実装されます。例えば、libcxxに、count()
はreturn (find(__k) != end());
1
ここではFindが最適なオプションだと思います。それ以上は必要ありません。
http://www.cplusplus.com/reference/unordered_map/unordered_map/find/
1
find()
とcount()
として実装されているC++における多くのコンテナに適用可能です。
マップの場合、findなどの検索は常にハッシュを計算し、見つかった最初の要素(イテレータは見つからなければend()
)に戻ります。他方、一定の実行時間O(e)を有する。ここで、eは、提供された鍵が見つかる回数である。別ウィンドウ(タブ)の大きな表示で見る最悪の場合は、すべてのメンバーが同じであるコレクションですので、count
が複雑O(n)の
map
またはunordered_map
を持つことができますので、その漸近実行時間が同じになり、重複することができません。
コードのセマンティクスによって異なります。キーが存在するかどうかだけを確認したい場合は、count
を使用します。キーが存在するかどうかを確認してその値を使用する場合は、その要素を指すイテレータが既に存在するため、find
に移動します。
関連する問題
- 1. どちらが高速で、key_cacheまたはOSキャッシュですか?
- 2. どちらのスパース線形ソルバが高速ですか? SparseLUまたはBiCGSTAB?
- 3. スタティックローカルvsローカル。どちらがCまたはC++で高速ですか?
- 4. どちらが高い解像度ですか? GPSまたは加速度計?
- 5. Linq、lambda - どちらの文が高速ですか?
- 6. どちらが高速ですか、C&MySqlかPHP&MySql?
- 7. どちらが高速でしょうか
- 8. どちらが速いですか:連合または連合?
- 9. Linq Count()はList.CountまたはArray.Lengthより高速か、遅いのですか?
- 10. データベースまたはメモリからのクエリですか?どちらが速いの?
- 11. どちらが速いですか?
- 12. どちらが速いですか
- 13. XMLまたはDataTablesのどちらを送信するのが最も高速ですか?
- 14. MinGWまたはVisual Studioを使用したQt Creator - どちらが「高速」ですか?
- 15. どちらが速いか:相関サブクエリまたは結合?
- 16. どちらの "if"構文が高速ですか?ステートメントまたは3項演算子?
- 17. Apache HTTPClient 4.xとHttpUrlConnection - どちらがAndroidで高速ですか?
- 18. どちらの行が高速に挿入されますか:SQL ServerストアドプロシージャまたはC#サーバーのサイドコード?
- 19. Find、Single、Firstのうち、どちらが最速ですか?
- 20. どちらが速いですか?ストアドプロシージャの挿入またはダイレクト後のトリガー
- 21. x86-64の方が速い、imm64またはm64のどちらですか?
- 22. Android SQLite:どのクエリ(「クエリ」または「rawQuery」)が高速ですか?
- 23. どちらが速く、赤色のLPUSHまたはRPUSHですか?
- 24. どちらが速いですか? Pythonのキャストとサブトラクション、またはディクテーションルックアップ
- 25. mysql - "INNER JOIN"または "IN"。どちらが速いの?
- 26. jQueryはどれが高速ですか?
- 27. どちらのAngular 1.5コンポーネントバインディングタイプがより高価ですか? '='または '<'?
- 28. mysql、ifnullとcoalesceはどちらが速いのですか?
- 29. セマフォとミューテックスはどちらが速いのですか?
- 30. 処理が速いのはどちらですか?
'unordered_map'は一意のキーを持っていることを知っていますので、' count() 'は最初のマッチで停止します(実装が壊れていない限り、 –