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

bun*_*nny 2 c++ time-complexity

假设我有一个std::unordered_set<int>命名为myset,我想从返回一个随机数mysetO(1)时间.我首先rand()用来生成一个随机数:

int n = rand() %  myset.size();
Run Code Online (Sandbox Code Playgroud)

然后,我做:

myset.begin() + n;
Run Code Online (Sandbox Code Playgroud)

我想知道是否myset.begin() + nO(n)O(1)

谢谢!

A.S*_*S.H 6

std::unordered_set<>::iterator(其从产生myset.begin())是一个Constant ForwardIterator.参考

一个ForwardIterator支持增量(++myIterator),但不是随机的增量,不像RandomAccessIterator的.

因此myset.begin() + n不保证按标准编译.它不在这里编译.

您可以使用循环执行++递增n时间,但当然,复杂度至少为O(n).