Namespaces
Variants

std::ranges:: crend

From cppreference.net
Ranges library
Range adaptors
定義先ヘッダ <ranges>
定義先ヘッダ <iterator>
inline namespace /* unspecified */ {

inline constexpr /* unspecified */ crend = /* unspecified */ ;

}
(C++20以降)
(カスタマイゼーションポイントオブジェクト)
呼び出しシグネチャ
template < class T >

requires /* see below */

constexpr /* see below */ auto crend ( T && t ) ;
(C++20以降)

定数イテレータの終端を示すセンチネルを返します (定数イテレータ用) (C++23以降) 。これは、逆順シーケンスとして扱われる const修飾された (C++23以前) 範囲の終端を示します。

range-rbegin-rend.svg

CT を以下のように定義する:

  • const std:: remove_reference_t < T > & 引数が左辺値の場合(すなわち T が左辺値参照型の場合)、
  • const T それ以外の場合。

ranges::crend の呼び出しは、 式等価 である: ranges:: rend ( static_cast < CT && > ( t ) )

(C++23以前)

引数が左辺値、または ranges:: enable_borrowed_range < std:: remove_cv_t < T >> true の場合、 ranges::crend の呼び出しは 式等価 である:

それ以外の場合、 ranges::crend の呼び出しは不適格であり、 置換失敗 を引き起こす可能性がある(呼び出しがテンプレートのインスタンス化の直接の文脈に現れる場合)。

(C++23以降)

e に対して ranges :: crend ( e ) が有効であり、 decltype ( ( e ) ) T である場合、 CT std::ranges::range をモデルし、かつ (C++23未満) std:: sentinel_for < S, I > が常に true となる。ここで S decltype ( ranges :: crend ( e ) ) I decltype ( ranges:: crbegin ( e ) ) である。 さらに、 S input_iterator をモデルする場合は、 S constant-iterator もモデルする。 (C++23以上)

カスタマイゼーションポイントオブジェクト

名前 ranges::crend カスタマイゼーションポイントオブジェクト を表し、これは 関数オブジェクト のconst版で、 リテラル型 semiregular クラス型である。詳細は CustomizationPointObject を参照。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    int a[]{4, 6, -3, 9, 10};
    std::cout << "Array backwards: ";
    namespace ranges = std::ranges;
    ranges::copy(ranges::rbegin(a), ranges::rend(a),
                 std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
    std::cout << "Vector backwards: ";
    std::vector v{4, 6, -3, 9, 10};
    ranges::copy(ranges::rbegin(v), ranges::rend(v),
                 std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}

出力:

Array backwards: 10 9 -3 6 4
Vector backwards: 10 9 -3 6 4

関連項目

範囲に対する逆方向終端イテレータを返す
(カスタマイゼーションポイントオブジェクト)
(C++14)
コンテナまたは配列に対する逆方向終端イテレータを返す
(関数テンプレート)