TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C++ algorithm reverse() function

C++ algorithm reverse() function with c++ tutorial for beginners and professionals with examples on adjacent_find(),any_of(), copy(), copy_if(), count(), count_if(), equal(), find(), find_end(), find_first_of(), find_if(), find_if_not(), for_each() etc.

<< Back to CPP

C++ Algorithm reverse()

C++ Algorithm reverse() function is used to reverse the order of the elements within a range [first, last).

Syntax

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

first: A bidirectional iterator pointing the position of the first element in the range in which the elements are being reversed.

last: A forward iterator pointing the position one past the final element in the range in which the elements are being reversed.

Return value

None

Complexity

Complexity is linear in the range [first, last): swaps elements.

Data races

The object in the range [first, last) are modified.

Exceptions

This function throws an exception if either an element is swapped or an operation on iterator throws an exception.

Note: The invalid parameters cause an undefined behavior.

Example 1

Let's see the simple example to reverse the given string:

#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:

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

Example 2

Let's see another simple example to reverse the range of numbers:

#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:

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:

#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:

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:

#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:

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  

Next TopicC++ Algorithm




Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf