Iterate vector backwards in C++

In this tutorial, one can get to know how to iterate a vector from backward in C++. There are 3 methods to iterate a vector backward.

In arrays, if we wanted to increase or decrease the size, we must allocate space. But whereas in vectors, it can automatically add or decrease the size. In C++ STL, we have inbuilt iterators for a vector i.e. begin(), end(), rbegin(), rend(). These make our work very easy. Let’s see the 3 methods on how to iterate a vector backward.

Iterating vector backward

1. By ‘for’ loop:
This method is a basic one where we start from the rightmost element and come to the left element using a for loop.

2. By rbegin() and rend():
In this method, we use inbuilt functions to start reverse begin (rbegin) to reverse end.

3. By reversing the vector and iterating:
In this method, we reverse the whole array and iterate from starting.

Let’s see the code

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

int main(){

    vector<int> arr = {1,2,3,4,5,6,7,8};
    int n = arr.size();
    
    // Method 1
    cout << "Iterating vector backward using indexing" << endl;
    for(int i=n-1; i>=0; i--){
        cout << arr[i] << " ";
    }
    
    cout << endl;
    
    // Method 2
    cout << "\nIterating vector backward using rbegin and rend" << endl;
    for (auto it = arr.rbegin(); it != arr.rend(); it++)
        cout << *it << " ";

    cout << endl;

    // Method 3
    cout << "\nReversing vector and iterating vector using begin() to end()" << endl;
    reverse(arr.begin(), arr.end());
    for (auto it = arr.begin(); it != arr.end(); it++)
        cout << *it << " ";

    return 0;
}

Output

Iterating vector backward using indexing
8 7 6 5 4 3 2 1

Iterating vector backward using rbegin and rend
8 7 6 5 4 3 2 1

Reversing vector and iterating vector using begin() to end()
8 7 6 5 4 3 2 1

 

Complexity Analysis

Method 1: Time O(n), Space O(1)
Method 2: Time O(n), Space O(1)
Method 3: Time O(n), Space O(1)

Leave a Reply

Your email address will not be published.