繁体   English   中英

unordered_set的时间复杂度是多少 <int> :: iterator it + n?

[英]what is the time complexity of unordered_set<int>::iterator it+n?

假设我有一个名为mysetstd::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM