【发布时间】:2018-05-11 07:48:48
【问题描述】:
我有数十亿个标签。这些标签最多包含大约 20 个从 1 到 500 的整数。我需要在每个标签中搜索每个整数的存在,并可能将整数插入标签。我也有内存限制。所以在某些情况下我需要删除标签以释放内存。 哪一个更好? 使用vector保存标签数据还是使用unordered_set?
【问题讨论】:
-
显示数据结构的一些代码(或其中的一部分)可能会有所帮助
-
这些整数的顺序重要吗?如果不是,
std::bitset可能是一个答案,因为每个标签只需要大约 500 位,并且能够为每个标签添加/检查O(1)处的每个整数。 -
让我们考虑两种可能的情况。 1)顺序无关紧要,不允许重复成员 2)我们可以重复,也可以顺序。
-
请提供minimal reproducible example。当您有许多标签并且每个标签包含许多整数时,尚不清楚 vector 和 unordered_set 是如何替代的
-
顺便说一句,回答这个问题的唯一方法是尝试两种方法并进行比较
标签: c++ performance memory