std::make_reverse_iterator - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::make_reverse_iterator

From cppreference.com
< cpp‎ | iterator

Defined in header `<iterator>` |  |
template <class Iterator> std::reverse_iterator<Iterator> make_reverse_iterator( Iterator i ); |  | (since C++14)

`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.

### [edit] Parameters

i | - | input iterator to be converted to reverse iterator

### [edit] Return value

A std::reverse_iterator constructed from `i`

### [edit] Possible implementation

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

### [edit] Example

Run this code

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

    int main() {
        auto v = std::vector<int>{ 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,

### [edit] See also

reverse_iterator | iterator adaptor for reverse-order traversal (class template) [edit]
rbegincrbegin (C++14) | returns a reverse iterator to a container or array (function) [edit]
rendcrend (C++14) | returns a reverse end iterator for a container or array (function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/iterator/make_reverse_iterator&oldid=77880"