std::make_reverse_iterator (3) - Linux Manuals

std::make_reverse_iterator: std::make_reverse_iterator

NAME

std::make_reverse_iterator - std::make_reverse_iterator

Synopsis


Defined in header <iterator>
template <class Iter> (since C++14)
std::reverse_iterator<Iter> make_reverse_iterator( Iter i ); (until C++17)
template <class Iter> (since C++17)
constexpr std::reverse_iterator<Iter> make_reverse_iterator( Iter i );


make_reverse_iterator is a convenience function template that constructs a std::reverse_iterator for the given iterator i with the type deduced from the type of the argument.

Parameters


i - iterator to be converted to reverse iterator

Return value


A std::reverse_iterator constructed from i

Possible implementation


  template< class Iter >
  constexpr std::reverse_iterator<Iter> make_reverse_iterator( Iter i )
  {
      return std::reverse_iterator<Iter>(i);
  }

Example


// Run this code


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


  int main() {
      std::vector<int> v{ 1, 3, 10, 8, 22 };


      std::sort(v.begin(), v.end());
      std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ", "));


      std::cout << '\n';


      std::copy(
          std::make_reverse_iterator(v.end()),
          std::make_reverse_iterator(v.begin()),
          std::ostream_iterator<int>(std::cout, ", "));
  }

Output:


  1, 3, 8, 10, 22,
  22, 10, 8, 3, 1,

See also


                 iterator adaptor for reverse-order traversal
reverse_iterator (class template)


rbegin returns a reverse iterator to a container or array
crbegin (function template)


(C++14)


rend returns a reverse end iterator for a container or array
crend (function template)


(C++14)