简体   繁体   中英

how to get iterator to a particular position of a vector

Suppose i have a

std::vector<int> v
//and ...
for(int i =0;i<100;++i) 
 v.push_back(i);

now i want an iterator to, let's say 10th element of the vector.

without doing the following approach

std::vector<int>::iterator vi;
vi = v.begin();
for(int i = 0;i<10;i++)
  ++vi;

as this will spoil the advantage of having random access iterator for a vector.

This will work with any random-access iterator, such as one from vector or deque :

std::vector<int>::iterator iter = v.begin() + 10;

If you want a solution that will work for any type of iterator, use next :

std::vector<int>::iterator iter = std::next(v.begin(), 10);

Or if you're not on a C++11 implementation, advance :

std::vector<int>::iterator iter = v.begin();
std::advance(iter, 10);

Just add 10 to the iterator. They are intended to "feel" like pointers.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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