Get element from arbitrary index in set
c++, stl
Solution
`myset.begin() + 5;` only works for random access iterators, which the iterators from `std::set` are not.
For input iterators, there's the function `std::advance`:
set<int>::iterator it = myset.begin();
std::advance(it, 5); // now it is advanced by five
In C++11, there's also `std::next` which is similar but doesn't change its argument:
auto it = std::next(myset.begin(), 5);
`std::next` requires a forward iterator. But since `std::set<int>::iterator` is a bidirectional iterator, both `advance` and `next` will work.
Problem
I have a set of type `set<int>` and I want to get an iterator to someplace that is not the beginning. I am doing the following: ``` set<int>::iterator it = myset.begin() + 5; ``` I am curious why this is not working and what is the correct way to get an iterator to where I want it.