1. ホーム
  2. c++

[解決済み] std::mapとstd::unordered_mapの選択 [duplicate]

2022-06-05 22:40:35

質問

では、その std には本物のハッシュ・マップがあります。 unordered_map を使いたいと思うのはなぜでしょう? map を超える unordered_map が実際に存在するようなシステムで?私がすぐに見ることができないような明らかな状況があるのでしょうか?

どのように解決するのですか?

として 既出 , map は要素をソートして反復処理することができますが unordered_map はそうではありません。これは、例えばコレクション(アドレス帳など)を表示するような、多くの状況で非常に重要です。これはまた、次のような他の間接的な方法にも現れます。(1) イテレータとして find() のようなメンバ関数が存在する。 lower_bound() .

また、多少なりとも違いのある 最悪の場合 検索 の複雑さ。

  • については map の場合、O( lg N ) となります。

  • については unordered_map の場合、O( N )である [この はハッシュ関数が良くなく、ハッシュの衝突が多すぎるときに起こります]。

同じことが 最悪の場合 削除 の複雑さ。