unordered_set を unordered_map のキーとして保存しようとしていますが、それは良い考えですか、それとも std::set を使用してデータを保存し、std::map を使用して std::set をキーとして保存する必要があります。パフォーマンス/ルックアップに適しているのはどれですか?
どんな提案も役に立ちます
unordered_set を unordered_map のキーとして保存しようとしていますが、それは良い考えですか、それとも std::set を使用してデータを保存し、std::map を使用して std::set をキーとして保存する必要があります。パフォーマンス/ルックアップに適しているのはどれですか?
どんな提案も役に立ちます
多くのデータ構造のパフォーマンス関連の質問と同様に、正確な答えはデータ セットによって異なります。
ルックアップのパフォーマンスのみに関心があることを考慮すると、小さなデータ セットでは通常、コンテナーの順序付けられたバージョンの使用が好まれます。ここで、「データ セット」は、キー タイプ (set と unordered_set) のキー内の要素の平均数を意味します。外側のマップ タイプ (マップと unordered_map) の (set, value_type) アイテムの数。ちなみに、 unordered_map 、 value_type> など、順序付けられたコンテナーと順序付けられていないコンテナーを混在させることを妨げるものは何もありません。
それでも、どちらのコンテナーが優れているかを 100% 確実にする唯一の方法は、実際のデータでこれをプロファイリングすることです。
それを念頭に置いて、ここにいくつかの詳細があります:
後でこれを測定するためにいくつかの実際のテストを投稿しようとします。