【问题标题】:Storing elements in an unordered_set vs storing them in an unordered_map将元素存储在 unordered_set 与将它们存储在 unordered_map
【发布时间】:2011-12-01 12:31:44
【问题描述】:

假设我有以下用户结构:

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 访问特定用户对象方面非常快。

【问题讨论】:

    标签: c++ data-structures unordered-map unordered-set


    【解决方案1】:

    我会选择unordered_map,因为我可以随时获取用户,只要给定一个用户ID,而无需任何额外工作,而unordered_set 我没有这个功能。

    对于上述操作,速度几乎相同。

    【讨论】:

      【解决方案2】:

      由于unordered_set&lt;&gt; 无法让您通过用户ID 轻松访问用户,unordered_map&lt;&gt; 似乎是正确的选择。

      【讨论】:

        【解决方案3】:

        如果性能是一个重要问题,那么您可能需要分析并查看哪个性能更好。否则,请选择最符合逻辑地描述您正在尝试做的事情。 [如果您需要在其他地方订购,我认为 setmap 可能只有 100K 件商品的性能还可以接受]

        【讨论】:

          猜你喜欢
          • 2017-03-06
          • 2022-01-27
          • 2011-08-07
          • 1970-01-01
          • 2013-12-02
          • 2019-08-16
          • 1970-01-01
          • 2017-10-20
          • 1970-01-01
          相关资源
          最近更新 更多