在unordered_set中存储元素与在unordered_map中存储元素
Storing elements in an unordered_set vs storing them in an unordered_map
假设我有以下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;
或
unordered_map <string, User> userRecords; // string is the user ID.
我需要它在插入,删除和通过userId访问特定用户对象方面非常快。
我会选择unordered_map
,因为我可以在任何时候获得一个用户,给定一个userid,而不需要任何额外的工作,而unordered_set
我没有这个设施。
对于上述操作,速度将几乎相同。
由于unordered_set<>
不能让您通过userId轻松访问用户,因此unordered_map<>
似乎是正确的选择。
如果性能是一个重要的关注点,那么您可能想要分析并查看哪一个性能更好。否则,选择最合乎逻辑地描述你要做的事情的那个。[只有10万件,我认为set
和map
的性能可能还可以接受,如果你需要在其他地方订购的话]
相关文章:
- 如何从存储在std::映射中的std::集中删除元素
- 带结构的二维矢量:如何存储元素
- C++将字符串数组的元素存储到变量中
- 数组对象的生存期是否在重用其元素存储时结束?
- 存储指向动态数组元素的指针
- 在固定大小的向量中存储指向元素的指针
- std::unordered_set 中的元素如何存储在C++内存中?
- 地图是否将元素存储为 std::p air?
- C++:矩阵高斯消除不起作用:使用单维数组来存储元素
- 如何在C++中将.csv文件的元素存储到二维向量中?
- 多集如何存储重复元素?
- 不能使用嵌套结构中的联合元素作为 scanf() 的参数来存储所需的值
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- OpenCV 文件存储 - 错误:元素之间的解析错误 (icvYMLParseValue) 缺失
- 存储 std::list 元素的地址;内存
- std::unordered_map如何存储和比较其密钥,以实现无需订购即可快速访问元素?
- 指向对象表示元素或指向提供的存储元素的指针
- 在数组中存储元素时出错
- 在unordered_set中存储元素与在unordered_map中存储元素
- 用于按排序顺序存储元素并允许快速索引的数据结构