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 万件商品setmap如果您需要在其他地方订购,性能可能还可以接受]

于 2011-10-05T14:01:12.240 回答