前提条件: 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
java 現在の日付を取得する
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>注文;>>' >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing ordered values> >for> (>auto> i = order.begin(); i> >!= order.end(); i++) {> >std::cout << ' : ' '
'; } }> |
文字を文字列に変換する方法
>出力
酸特性データベース
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>>注文;>>' >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing unordered values> >for> (>auto> i = order.begin();> >i != order.end(); i++)> >{> >std::cout << ' : ' '
'; } }> |
>
整数を文字列Javaに変換します
>出力
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 は、要素をキーと値のペアとしてソートされていない順序で格納するために使用されます。 |