Open In App

std::advance in C++

Last Updated : 26 Apr, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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<int> 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 <iostream>
#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<int >::iterator it=vect.begin();
  
     for(int i=1;i<=10;i++)
     {
       cout<<*it<<" ";
       it++;
       
     }
   vector<int >::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


Next Article
Article Tags :
Practice Tags :

Similar Reads