find()アルゴリズムがマップに対して機能しないため、map :: findを代わりに使用する必要がある理由は何ですか?なぜSTLアルゴリズムのfind()がマップ上で動作しないのですか?
答えて
- これは、マップ上で動作んが、キータイプ、(
std::pair<const map::key_type, map::mapped_type>
です)map::value_type
と比較する必要はありません。 - map.findはキーを受け取り、キーと値のペアの反復子を返します。
他のところで指摘したように、動作しますが、タイプはキーと値のペアなので、比較を行うために関数/関数を指定する必要があります。 (カスタム演算子==()でオーバーロードすることもできますが、私はそのようなことを試みたことはありません)
おそらくマップメンバー関数find O(logN)ルックアップ、アルゴリズムstd :: find()はO(N)です。
追加:私はあなたもOK(これらはO(LogN)でもOK)マップでstd :: equal_range/lower_bound/upper_bound()を使うことができると思います。
カスタム演算子==は許可も必要もありません。 find_if innsteadを使用してください。 – MSalters
あなたは大丈夫です。 –
equal_rangeですか?マップでは、lower_bound、upper_bound、equal_rangeのメンバー関数を使用する必要があります。同等のstdは対数の比較を提供するかもしれませんが、コンテナの要素を歩くためには線形時間が必要です。
リニアウォークは本当ですか?私はあなたがランダムアクセスイテレータを持っていれば、ログウォークをうまくいくと思った。 –
ランダムアクセスイテレータがある場合はそうですが、そうでない場合は、リニアなステップ数を実行する必要があります。 std :: mapはランダムアクセスイテレータを提供しません。 – navigator
これは間違いありません。マップのイテレーターは双方向です。 –
これらのようなテーマについては、Scott Meyersの「Effective STL」をお読みください。
「項目43:同じ名前を持つアルゴリズムのメンバ関数を優先」メンバ関数が存在し、なぜあなたはそれを使うべき理由について
。
Scott Meyersは、独自のループを記述するのではなく、STLアルゴリズムを使用することも推奨しています(2001年版のItem 43)。あなただけ明確にするだけで
find(mmap.begin(), mmap.end(), "value")
- 1. なぜfindAll()が動作し、find($ id)が動作しないのですか?
- 2. .find()がpython 3のurllib.request.urlopen()で動作しないのはなぜですか?
- 3. Safariでfind( 'input:focus')が動作しないのはなぜですか
- 4. subprocess.Popenがfind -execで動作しないのはなぜですか?
- 5. 私の `find`コマンドが動作しないのはなぜですか?
- 6. Project Euler 31で検索アルゴリズムが動作しないのはなぜですか?
- 7. ブートストラップスライダがCartoマップで動作しないのはなぜですか?
- 8. なぜSTLはfind()&empty()にコアダンプを `set`しますか?
- 9. 私のサーバー上でJavaScriptが動作しないのはなぜですか?
- 10. リアルタイムでGoogleマップ上のポリラインが動作しない
- 11. なぜasync awaitがIIS上で動作しないのですか?IIS Expressで動作しています
- 12. なぜクロージャースワップ!マップで正しく動作しないのですか?
- 13. なぜこのphpはGoogleマップで動作しないのですか?
- 14. なぜアルゴリズムが遅いのですか?
- 15. Google Maps APIがサーバー上で動作しないのはなぜですか?
- 16. OSX上でapache2ctlが動作しないのはなぜですか?
- 17. w3.css Side navbarがページ上で動作しないのはなぜですか?
- 18. なぜjQuery UIクラスがテーブル上で動作しないのですか
- 19. なぜSTLがデータ構造とアルゴリズムを分離するのですか
- 20. なぜのstd ::マップが奇妙な動作しますか?
- 21. Android GoogleマップOnMapReadyCallback()がデバイス上で動作しない(シミュレータで動作する)
- 22. なぜ私のRubyアプリケーションがローカルで動作し、Heroku上で動作しないのですか?
- 23. @arrayにfindコマンドが含まれているとシステム(@array)が動作しないのはなぜですか?
- 24. なぜSTLヘッダーファイルに拡張子がないのですか?
- 25. 自動テストが動作しないのはなぜですか?
- 26. テキスト読み上げ機能が動作しないのはなぜですか?
- 27. GCC 4.5.1でこのSTLマップのエントリが初期化されないのはなぜですか?
- 28. このコードはモバイルデバイス上で動作しないのはなぜですか?
- 29. モデルナビゲーションがセルフトラッキングエンティティで動作しないのはなぜですか?
- 30. なぜJavaScriptがFirefoxで動作しないのですか
を使用することができるはず単純型の場合は、マップの 'VALUE_TYPE_は' 'ペアです。 –
標準セクション23.3.1によると、std :: mapでは、key_typeはKeyですが、value_typeはpair です。その理由は、値が挿入されると挿入の鍵は不変でなければならない、そうでなければ順序の不変量が壊れる可能性があるからです。 –