假设我有以下User结构:
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;
OR
unordered_map <string, User> userRecords; // string is the user ID.
我需要它在插入,删除和通过userId访问特定用户对象方面非常快。
答案 0 :(得分:7)
我会选择unordered_map
,因为我可以随时获得一个用户ID,而无需任何额外工作,而unordered_set
我没有此功能。
对于上述操作,速度几乎相同。
答案 1 :(得分:6)
由于unordered_set<>
无法让您通过userId轻松访问用户,因此unordered_map<>
似乎是正确的选择。
答案 2 :(得分:6)
如果性能是一个重要问题,那么您可能想要分析并查看哪个性能更好。否则,请选择最符合逻辑描述您要执行的操作的那个。 [如果您需要在其他地方订购,我认为只有100K项目set
和map
可能具有可接受的性能“