# std::make_reverse_iterator

< cpp‎ | iterator

定义于头文件 `<iterator>` |  |
template <class Iter> std::reverse_iterator<Iter> make_reverse_iterator( Iter i ); |  | (C++14 起) (C++17 前)
template <class Iter> constexpr std::reverse_iterator<Iter> make_reverse_iterator( Iter i ); |  | (C++17 起)

`make_reverse_iterator` 是便利函数模板，对给定的迭代器 `i` ，构造拥有从参数类型推导的类型的 std::reverse_iterator 。

### 参数

i | - | 要转换为逆向迭代器的输入迭代器

### 返回值

从 `i` 构造的 std::reverse_iterator

### 可能的实现

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

### 示例

    #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, ", "));
    }

输出：

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

### 参阅

reverse_iterator | 逆序遍历的迭代器适配器 (类模板)
rbegin crbegin (C++14) | 返回指向一个容器或数组的逆向迭代器 (函数模板)
rend crend (C++14) | 返回容器或数组的逆向尾迭代器 (函数模板)