C++ におけるマップと unowned_map

前提条件: std::マップ 、std::unowned_map
効率という点では、マップと順序なしマップの間には大きな違いがあります。
どちらを使用するかを決定するには、両方の内部動作を知る必要があります。

違い :

 | map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | of keys(by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) ->平均 | | O(n) -> 最悪の場合の挿入時間 | log(n) + リバランス |検索と同じ 削除時刻 | log(n) + リバランス |検索と同じ>>'   

std::map を使用する場合

  • 順序付けされたデータが必要です。
  • (ソートされた順序で) データを印刷/アクセスする必要があります。
  • 要素の先行/後続が必要です。
  • その他のケースについては、ハッシュ テーブルに対する BST の利点を参照してください。

CPP




// CPP program to demonstrate use of std::map> #include> int> main()> {> > // Ordered map> > std::map <> int> ,> int> >注文;>>'

出力

1 : 1 3 : 500 5 : 10 20 : 100 

次の場合に std::unowned_map を使用します。

  • いくつかのデータ (例 – 文字列) の数を保持する必要があり、順序付けは必要ありません。
  • 単一要素へのアクセスが必要です。つまり、トラバーサルは必要ありません。

CPP




// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> > // Unordered map> > std::unordered_map <> int> ,> int> >注文;>>'

出力

1 : 1 20 : 100 3 : 500 5 : 10 

違いを表形式で見てみましょう -:

地図 順序なしマップ
1. マップは #include ヘッダー ファイルで定義されます unowned_map は #include ヘッダー ファイルで定義されています
2. 実装されているのは、 赤黒の木 ハッシュテーブルを使用して実装されます。
3. 遅いです。 速いですね。
4. 時間計算量 操作の場合は O(log N) 操作の時間計算量は O(1)
5. map は、要素をキーと値のペアとして、キーでソートされた順序で格納するために使用されます。 unowned_map は、要素をキーと値のペアとしてソートされていない順序で格納するために使用されます。