# std::array<T,N>::rbegin, std::array<T,N>::crbegin

< cpp‎ | container‎ | array

reverse_iterator rbegin() noexcept; |  | (C++17 前)
constexpr reverse_iterator rbegin() noexcept; |  | (C++17 起)
const_reverse_iterator rbegin() const noexcept; |  | (C++17 前)
constexpr const_reverse_iterator rbegin() const noexcept; |  | (C++17 起)
const_reverse_iterator crbegin() const noexcept; |  | (C++17 前)
constexpr const_reverse_iterator crbegin() const noexcept; |  | (C++17 起)

返回指向逆向 `array` 首元素的逆向迭代器。它对应非逆向 `array` 的末元素。若 `array` 为空，则返回的迭代器等于 rend() 。

### 参数

（无）

### 返回值

指向首元素的逆向迭代器。

### 复杂度

常数。

### 示例

    #include <algorithm>
    #include <iostream>
    #include <string>
    #include <string_view>
    #include <array>

    int main()
    {
        constexpr std::array<std::string_view, 8> data = {"▁","▂","▃","▄","▅","▆","▇","█"};

        std::array<std::string, std::size(data)> arr;

        // 'data' 是只读 array 故我们只能用 const 版本的迭代器读取它
        // （注意 'cbegin' 前面的 'c' 代表 'const' ）；
        // 'arr' 是目标，故使用非 const 版本的迭代器 'begin' 。
        std::copy(data.cbegin(), data.cend(), arr.begin());
        //             ^              ^           ^

        auto print = [](const std::string_view s) { std::cout << s << ' '; };

        print("Print 'arr' in direct order using [cbegin, cend):\t");
        std::for_each(arr.cbegin(), arr.cend(), print);
        //                ^             ^
        print("\n\nPrint 'arr' in reverse order using [crbegin, crend):\t");
        std::for_each(arr.crbegin(), arr.crend(), print);
        //                ^^             ^^
        print("\n");
    }

输出：

    Print 'arr' in direct order using [cbegin, cend):        ▁ ▂ ▃ ▄ ▅ ▆ ▇ █

    Print 'arr' in reverse order using [crbegin, crend):     █ ▇ ▆ ▅ ▄ ▃ ▂ ▁

### 参阅

rend crend (C++11) | 返回指向末尾的逆向迭代器 (公开成员函数)