function template

std::advance

<iterator>
template <class InputIterator, class Distance>
  void advance (InputIterator& i, Distance n);
Advance iterator
Advances the iterator i by n elements.

If i is a Random Access Iterator, the function uses once operator+ or operator-, otherwise, the function uses repeatedly the increase or decrease operator (operator++ or operator--) until n elements have been advanced.

Parameters

i
Iterator to be advanced.
n
Number of elements to advance.
This can only be negative for random access and bidirectional iterators.
Distance is any numerical type able to represent distances between iterators of this type.

Return value

none

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// advance example
#include <iostream>
#include <iterator>
#include <list>
using namespace std;

int main () {
  list<int> mylist;
  for (int i=0; i<10; i++) mylist.push_back (i*10);

  list<int>::iterator it = mylist.begin();

  advance (it,5);

  cout << "The sixth element in mylist is: " << *it << endl;

  return 0;
}


Output

The sixth element in mylist is: 50

Complexity

Constant for random access iterators.
Linear on n for other categories of iterators.

See also