6

次のユーザー構造体があるとします。

struct User { 
    string userId; 
    UserType userType; // UserType is just an enumeration
    string hostName;
    string ipAddress;
    //and more other attributes will be added here

};

そして、ユーザーレコードのコレクションを保存する必要があります(約10 ^ 5ユーザー、さらに大きく拡張できます)。unordered_setまたはunordered_mapとして保存すると、パフォーマンスが向上しますか?Unordered_setは技術的にはHashSetと同じであり、unordered_mapはHashMapと同じですよね?要素の数が増えると挿入と削除が非常に遅くなるため、通常のセット(順序付き)を使用することはできません。

unordered_set <User> userRecords;

また

unordered_map <string, User> userRecords; // string is the user ID.

挿入、削除、およびuserIdによる特定のユーザーオブジェクトへのアクセスに関して、非常に高速である必要があります。

4

3 に答える 3

7

私はこの機能を持っていませんがunordered_map、追加の作業なしでいつでもユーザーIDを指定してユーザーを取得できるため、を選択します。unordered_set

上記の操作に関しては、速度はほぼ同じになります。

于 2011-10-05T14:01:05.707 に答える
6

unordered_set<>はuserIdでユーザーに簡単にアクセスする可能性を与えないのでunordered_map<>、正しい選択のようです。

于 2011-10-05T13:59:20.597 に答える
6

パフォーマンスが重要な懸念事項である場合は、プロファイルを作成して、どちらがパフォーマンスが優れているかを確認することをお勧めします。それ以外の場合は、実行しようとしていることを最も論理的に説明するものを選択してください。[10万個のアイテムしかないので、他の場所で注文する必要がある場合は、まだ許容できるパフォーマンスがあると思いますset]map

于 2011-10-05T14:01:12.240 に答える