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