[英]what is the time complexity of unordered_set<int>::iterator it+n?
假设我有一个名为myset
的std::unordered_set<int>
,并且我想在O(1)
时间从myset
返回一个随机数。 我首先使用rand()
生成一个随机数,如下所示:
int n = rand() % myset.size();
然后,我这样做:
myset.begin() + n;
我想知道myset.begin() + n
是否在O(n)
或O(1)
?
谢谢!
std::unordered_set<>::iterator
(由myset.begin()
)是一个Constant ForwardIterator
。 参考
与RandomAccessIterator不同, ForwardIterator支持增量( ++myIterator
),但不支持随机增量。
因此,不能保证标准会编译myset.begin() + n
。 它不在这里编译。
您可以使用循环将++
递增n
次,但是当然,复杂度至少为O(n)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.