GeezerVison is showing cpprefjp.github.io — std::ranges::rbegin - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月11日 13時06分31秒 (JST)
Akira Takahashi
が更新
履歴
編集
customization point object
<ranges>
std::ranges:: rbegin (C++20)
namespace std :: ranges {
inline namespace /*unspecified*/ {
inline constexpr /*unspecified*/ rbegin = /*unspecified*/ ;
}
}
概要
Rangeの末尾を指す逆イテレータを取得する関数オブジェクト。
効果
部分式Eの型をT、tをEを評価した値とする。
このとき、式ranges::rbegin(E)の効果は以下の通り。
Eがrvalueかつenable_borrowed_range <remove_cv_t <T>>がfalseであれば、呼び出しは不適格 。
Tが配列型かつremove_all_extents_t <T>が不完全型であれば、呼び出しは不適格 (診断不要 )。
auto(t.rbegin())が有効な式でその型がinput_or_output_iterator のモデルであれば、auto(t.rbegin())と等しい。
Tがクラス型または列挙体であって、rbegin(t)のrbeginの意味がADLのみによって決まるコンテキストで、auto(rbegin(t))が有効な式でその型がinput_or_output_iterator のモデルであれば、auto(rbegin(t))と等しい。
ranges::begin (t)とranges::end (t)が同じ型をもつ有効な式で、その型がbidirectional_iterator のモデルであれば、make_reverse_iterator (ranges::end (t))と等しい。
どれにも当てはまらないとき、呼び出しは不適格 。
戻り値
Rangeの末尾を指す逆イテレータ。
カスタマイゼーションポイント
3か4の条件を満たすようにする。例えば、ユーザー定義のフリー関数rbeginを定義するか、ユーザー定義のクラスにメンバ関数rbeginを持たせることでカスタマイズできる。
または、5の条件を満たすようにして、ranges::begin 、ranges::end をカスタマイズすることで、ranges::rbeginをカスタマイズできる。
例
#include <iostream>
#include <vector>
#include <ranges>
#include <algorithm>
void print ( int x )
{
std::cout << x << " " ;
}
int main ()
{
// コンテナ
{
std::vector < int > v = { 1 , 2 , 3 };
decltype ( v ) :: reverse_iterator first = std::ranges::rbegin ( v );
decltype ( v ) :: reverse_iterator last = std::ranges::rend ( v );
std::for_each ( first , last , print );
}
std::cout << std::endl ;
// 組み込み配列
{
int ar [] = { 4 , 5 , 6 };
std::reverse_iterator < int *> first = std::ranges::rbegin ( ar );
std::reverse_iterator < int *> last = std::ranges::rend ( ar );
std::for_each ( first , last , print );
}
std::cout << std::endl ;
// 初期化子リスト
{
std::initializer_list < int > init = { 7 , 8 , 9 };
std::reverse_iterator < const int *> first = std::ranges::rbegin ( init );
std::reverse_iterator < const int *> last = std::ranges::rend ( init );
std::for_each ( first , last , print );
}
}
出力
3 2 1
6 5 4
9 8 7
バージョン
言語
処理系
関連項目
参照