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. .find()がpython 3のurllib.request.urlopen()で動作しないのはなぜですか?
- 2. Safariでfind( 'input:focus')が動作しないのはなぜですか
- 3. 私のサーバー上でJavaScriptが動作しないのはなぜですか?
- 4. なぜクロージャースワップ!マップで正しく動作しないのですか?
- 5. なぜこのphpはGoogleマップで動作しないのですか?
- 6. なぜSTLはfind()&empty()にコアダンプを `set`しますか?
- 7. なぜのstd ::マップが奇妙な動作しますか?
- 8. なぜjQuery UIクラスがテーブル上で動作しないのですか
- 9. なぜ私のRubyアプリケーションがローカルで動作し、Heroku上で動作しないのですか?
- 10. なぜアルゴリズムが遅いのですか?
- 11. 自動テストが動作しないのはなぜですか?
- 12. IISでGoogleマップが動作しない
- 13. GoogleマップがIE7で動作しない
- 14. Cでfree()が動作しないのはなぜですか?
- 15. モデルナビゲーションがセルフトラッキングエンティティで動作しないのはなぜですか?
- 16. System.errでフラッシングが動作しないのはなぜですか?
- 17. htaccessがlocalhostで動作しないのはなぜですか?
- 18. なぜcolgroup/colがChromeで動作しないのですか
- 19. なぜ$ .postメソッドがIEで動作しないのですか?
- 20. なぜinstanceofがGenericで動作しないのですか?
- 21. Ajax.BeginFormがChromeで動作しないのはなぜですか?
- 22. PHPで `session_destroy()`が動作しないのはなぜですか?
- 23. ie7でドロップダウンが動作しないのはなぜですか?
- 24. add_EventNameがTimerで動作しないのはなぜですか?
- 25. なぜCodeIgniterでクッキーが動作しないのですか?
- 26. プレースホルダがIE8で動作しないのはなぜですか?
- 27. なぜJavaScriptがFirefoxで動作しないのですか
- 28. innerTEXTがノードで動作しないのはなぜですか?
- 29. なぜpythonでpool.mapが動作しないのですか?
- 30. なぜNSDateFormatterがICT TimeZoneで動作しないのですか
を使用することができるはず単純型の場合は、マップの 'VALUE_TYPE_は' 'ペアです。 –
標準セクション23.3.1によると、std :: mapでは、key_typeはKeyですが、value_typeはpair です。その理由は、値が挿入されると挿入の鍵は不変でなければならない、そうでなければ順序の不変量が壊れる可能性があるからです。 –