Algorithm Reverse Function - C++ Programming Tutorial
C++ Course / STL Algorithm / Algorithm Reverse Function

Algorithm Reverse Function

BLUF: Mastering Algorithm Reverse Function is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: Algorithm Reverse Function

C++ is renowned for its efficiency. Learn how Algorithm Reverse Function enables low-level control and high-performance computing in the tutorial below.

The reverse function in C++ Algorithm is employed to invert the sequence of elements in a specified range [first, last).

Syntax

Example

template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last);

Note: BidirectionalIterator is an iterator which is used to access any elements of a container in both forward and backward direction.

Parameter

A bidirectional iterator indicates the location of the initial element within the range where the elements are being reversed.

The last iterator points to the element immediately after the last one in the range where the reversal operation is being performed.

Return value

Complexity

The complexity increases linearly within the specified range [first, last) while swapping elements.

Data races

The elements within the range [first, last) undergo modifications.

Exceptions

This function will raise an exception if either an element is exchanged or if an operation on the iterator results in an exception.

Note: The invalid parameters cause an undefined behavior.

Example 1

Let's explore a basic example showcasing how to reverse a provided string:

Example

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main() {
  string str = "Hello Myself Nikita";
  cout << "Before Reverse : "<< str << endl;

  reverse(str.begin(), str.end());
  cout <<"After Reverse  : " << str << endl;
  
  return 0;
}

Output:

Output

Before Reverse : Hello Myself Nikita
After Reverse   : atikiN flesyM olleH

Example 2

Let's examine another straightforward example to invert the range of numbers:

Example

#include <vector>  
#include <algorithm>  
#include <iostream>  

using namespace std;
  
int main( ) {    
   vector <int> v1;  
   vector <int>::iterator Iter1;  
  
   int i;  
   for ( i = 0 ; i <= 9 ; i++ )  
   {  
      v1.push_back( i );  
   }  
  
   cout << "The original vector v1 is:\n ( " ;  
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )  
      cout << *Iter1 << " ";  
   cout << ")." << endl;  
  
   // Reverse the elements in the vector   
   reverse (v1.begin( ), v1.end( ) );  
  
   cout << "The modified vector v1 with values reversed is:\n ( " ;  
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )  
      cout << *Iter1 << " ";  
   cout << ")." << endl;  
   
   return 0;
}

Output:

Output

The original vector v1 is:
 ( 0 1 2 3 4 5 6 7 8 9 ).
The modified vector v1 with values reversed is:
 ( 9 8 7 6 5 4 3 2 1 0 ).

Example 3

Let's see another simple example:

Example

#include<iostream> 
#include<algorithm> 
#include<vector> 
using namespace std; 
  
int main() 
{ 
    vector <int> v ; 
      
    // Inserting elements in vector 
    for (int i = 0; i < 8; i++) 
        v.push_back(i+10); 
        
    // Displaying elements of vector 
    vector <int> :: iterator it; 
    cout<<"Before: ";
    for (it = v.begin(); it != v.end(); it++) 
        cout << (*it) << " "; 
      
    cout << "\n\nReverse only from index 5 to 7 in array:\n"; 
    // Reversing elements from index 5 to index 7 
    reverse(v.begin() + 5, v.begin() + 8); 
      
    for (it = v.begin(); it != v.end(); it++) 
        cout << (*it) << " "; 
      
    // Reversing directly from beginning to end 
    cout << "\nReverse full array:\n"; 
      
    int a[] = {4, 5, 6, 7}; 
    reverse(begin(a), end(a)); 
  
    // Print the array 
    cout << a[0] << a[1] << a[2] << a[3] << '\n'; 
    return 0; 
}

Output:

Output

Before: 10 11 12 13 14 15 16 17 

Reverse only from index 5 to 7 in array:
10 11 12 13 14 17 16 15 
Reverse full array:
7654

Example 4

Let's see another simple example:

Example

#include <iostream>
#include <algorithm>
#include <vector>
#include <iomanip>
using namespace std;
 
void print(string a[], int N)
{   
    for(int i = 0; i < N; i++)
    {
        cout << (i + 1) << ". " << setw(5)
             << a[i] << "  ";
    }
    cout << endl;
}
 
int main()
{
    string s[] = {"George", "John", "Nik", "Alice", "Bob", "Watson"};
 
    cout << "Original order : ";
    print(s, 6);
    cout << "\nReversing the order ... " << endl;
    reverse(s, s + 6);
    cout << "Reversed order : ";
    print(s, 6);
}

Output:

Output

Original order : 1. George  2.  John  3.   Nik  4. Alice  5.   Bob  6. Watson  

Reversing the order ....
Reversed order : 1. Watson  2.   Bob  3. Alice  4.   Nik  5.  John  6. George

Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience