std::advance in C++ (original) (raw)

Last Updated : 26 Apr, 2022

std::advance advances the iterator 'it' by n element positions. Syntax :

template void advance (InputIterator& it, Distance n);

it : Iterator to be advanced n : Number of element positions to advance. This shall only be negative for random-access and bidirectional iterators.

Return type : None.

Motivation problem : A vector container is given. Task is to print alternate elements. Examples :

Input : 10 40 20 50 80 70 Output : 10 20 80

CPP `

// C++ program to illustrate // using std::advance #include <bits/stdc++.h>

// Driver code int main() { // Vector container std::vector vec;

// Initialising vector
for (int i = 0; i < 10; i++)
    vec.push_back(i * 10);

// Printing the vector elements
for (int i = 0; i < 10; i++) {
    std::cout << vec[i] << " ";
}

std::cout << std::endl;

// Declaring the vector iterator
std::vector<int>::iterator it = vec.begin();

// Printing alternate elements
while (it < vec.end()) {
    std::cout << *it << " ";
    std::advance(it, 2);
}

}

`

Output:

0 10 20 30 40 50 60 70 80 90 0 20 40 60 80

C++ `

#include #include<bits/stdc++.h> using namespace std;

int main() {

vector<int >vect(10);

//insert the ten element in the vector for(int i=1;i<=10;i++) { vect[i-1]=i; } //iterator pointing to first element. vector::iterator it=vect.begin();

 for(int i=1;i<=10;i++)
 {
   cout<<*it<<" ";
   it++;
   
 }

vector::iterator it1=vect.begin(); //here it is pointing to the 3rd element.
advance(it1,2);//here second argument is the index base.

cout<<endl;

cout<<it1; //print it1 pointing to the 3rd position. return 0; } / This code is contributed by Sameer Hake/*

`

Output

1 2 3 4 5 6 7 8 9 10 3