Reverse function: reverses container contents

The reverse function reverses the contents of a container, contained in < algorithm> In the library.
1. Function prototype
The reverse function is equivalent to the following code:

template <class BidirectionalIterator> void reverse (BidirectionalIterator first, BidirectionalIterator last)
{
     while ((first!=last)&&(first!=--last))
     {
          std::iter_swap (first,last);
          ++first;
     }
}

The reverse function swaps two elements using iter_swap.

2. Parameters: first and last
First and last are bidirectional iterators, and the scope of reverse function inversion is [first,last], so the elements pointed to by first are included, but the elements pointed to by last are not.
3. Return value
The reverse function returns no value.
Example 4,

// reverse algorithm example
#include <iostream>    
// std::cout
#include <algorithm>   
// std::reverse
#include <vector>      
// std::vector

int main () {
    std::vector<int> myvector;
    // set some values:
    for (int i=1; i<10; ++i) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9
    std::reverse(myvector.begin(),myvector.end());    // 9 8 7 6 5 4 3 2 1
    // print out content:
    std::cout << "myvector contains:";
    for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
        std::cout << ' ' << *it;
    std::cout << '\n';
    return 0;
}

Output:

myvector contains: 9 8 7 6 5 4 3 2 1

5. Complexity

Iterate over the first and last elements. So the complexity is linear and the loop is half the length of the array.

Read More: