C++に関する最近の話で、ルックアップの効率 (償却された O(1)対O(log n) ) のために、以前に使用したほとんどの場合にunordered_map使用する必要があることに気付きました。ほとんどの場合、マップを使用します。キー タイプとしてまたはを使用します。したがって、ハッシュ関数の定義に問題はありません。考えれば考えるほど、単純な型のキーの場合に a の上に aを使用する理由が見つからないことに気づきました。インターフェイスを調べたところ、何も見つかりませんでした。私のコードに影響を与える重要な違い。unordered_mapmapintstd::stringstd::mapstd::unordered_map
したがって、質問: andのような単純な型の場合にstd::mapoverを使用する本当の理由はありますか?std::unordered_mapintstd::string
私は厳密なプログラミングの観点から質問しています。それは完全には標準と見なされておらず、移植に問題を引き起こす可能性があることを知っています。
また、正しい答えの 1 つは、オーバーヘッドが小さいため、 「小さいデータ セットの方が効率的である」ということになると思います (それは本当ですか?)。 keys は自明ではありません (>1 024)。
編集: 当たり前のことを忘れていました(GManに感謝します!)-はい、もちろんマップは順序付けられています-私はそれを知っており、他の理由を探しています。