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

来自cppreference.com
< 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()

range-rbegin-rend.svg

参数

(无)

返回值

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

复杂度

常数。


示例

#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):     █ ▇ ▆ ▅ ▄ ▃ ▂ ▁

参阅

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