【发布时间】:2014-08-21 19:23:52
【问题描述】:
在我的应用程序中,我有以下要求 -
数据结构将只用一些值(不是键/值对)填充一次。 这些值可能会重复,但我希望数据结构只存储一次。
我将遍历上面创建的数据结构的所有元素 100 次。元素在迭代中出现的顺序无关紧要。
约束 1 表明我必须使用 set 或 unordered_set,因为数据不是键值对的形式。
现在 set 插入比 unordered_set 插入更昂贵,但数据结构仅在我的程序开始时填充一次。
我相信决定因素将是我能够以多快的速度迭代数据结构的所有元素。为此,我不确定 set 或 unordered_set 是否会更快。我相信标准没有提到这个事实,因为对于任何一种数据结构,这个操作都是 O(n)。但我想知道哪个数据结构 iterator.next() 会更快。
【问题讨论】:
-
所以,测量一下看看。
-
矢量怎么样?
-
您可以为不同的目的使用不同的结构。例如,构建一个
set,然后在完成后将所有内容复制/移动到vector中以进行快速迭代。因此,问题是:一旦冻结,除了迭代之外,您还需要什么else? (如快速查找) -
@AviralGoel:你认为这个系列神奇地不需要支付那个成本吗?
-
@JoachimPileborg:
std::lower_bound:-S
标签: c++ c++11 stl set unordered-set