The reverse function can reverse the contents of a container, included in the algorithm 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 uses iter_swap to swap two elements.
2. Parameters: first, last
First and last are bidirectional iterator types, and the reverse range of the reverse function is [first, last), so the element pointed to by first is included, but the element pointed to by last is not included.
3. Return value
The reverse function has no return value.
4. Examples
// 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
Circular exchange of the first and last elements. So the complexity is linear and loops half the array length.