2017-10-25 17 views
0

はによると:This Tutorialマップと無秩序マップの違いは何ですか?

私はstd::mapstd::unorderedmapの違いを理解することはできません。いつ、なぜ使用するのですか地図Unorderedmap

+2

この回答はテーブルの違いを表示します:https://stackoverflow.com/a/13799886/5601284 – byxor

+1

['std :: map'](http://en.cppreference.com/w/ ['std :: unordered_map'](http://en.cppreference.com/w/cpp/container/unordered_map)が存在しない間に、cpp/container/map)が*整列*されていますか? –

+1

あなたが投稿した同じリンクに別の投稿 'http:// thispointer.com/map-vs-unordered_map-one-over-anotherを選択する/ –

答えて

1

提供したチュートリアルで読んだとおり、std::unorderedmapの検索速度はO(1)です。 std::mapにある間はO(log2(n))です。nは地図のサイズです。
std::findを頻繁に呼び出す必要がある場合は、このオプションを検討することができます。ハッシュ関数を選択するのは簡単な作業ではありません。

+0

"std :: unorderedmapの検索速度はO(1)です"これはあまり真実ではありません。 – Slava

+0

@Slavaさて、私は 'std :: unorderedmap'を使用しませんでしたが、チュートリアルではキーのハッシュが計算されて比較されると述べています。これは対数的な複雑さよりも 'O(1)'の方が多いですか? –

+0

それはそうではありません、 'std :: map'と' std :: unordered_map'のO(1)のO(log2(n))を比較しますが、AppleとAppleの比較ではないので比較できません。 'std :: unordered_map'は通常O(1)を持ちますが、O(n)に劣化する可能性がある間、' std :: map'はO(log2(n))を保証します。あなたの声明では、検索速度は常にO(1)であることが示されていますが、これは間違いであり、誤解を招く可能性があります。 – Slava

関連する問題