Namespaces
Variants

std::ranges::concat_view<Views...>:: iterator <Const>:: satisfy , prev , advance-fwd , advance-bwd

From cppreference.net
Ranges library
Range adaptors

以下の説明専用メンバー関数テンプレートは記述を簡略化します。

各ヘルパー関数テンプレートは、型 std::size_t の定数テンプレートパラメータを持ちます。

  • テンプレートパラメータの名前が N の場合、テンプレート引数は常に it_  . index ( ) となります。
  • テンプレートパラメータの名前が I の場合、テンプレート引数は [ 0 , sizeof... ( Views ) ) の範囲内の任意の std::size_t 値を取ることができます。

しかし、テンプレート引数はコンパイル時定数ではない可能性があるため、 helper  < non_const > ( /* arguments */ ) の実際の効果は if ( non_const == 0 )
helper  < 0 > ( /* arguments */ ) ;
else if ( non_const == 1 )
helper  < 1 > ( /* arguments */ ) ;
/* other indices */
else if ( non_const == ( sizeof... ( Views ) - 1 ) )
helper  < sizeof... ( Views ) - 1 > ( /* arguments */ ) ;
に類似します。

目次

ヘルパーテンプレート

ミニヘルパーテンプレート

template < std:: size_t N >
constexpr auto /*get-iter*/ ( ) ;
(1) ( 説明専用* )
template < std:: size_t I >
constexpr auto /*get-view*/ ( ) ;
(2) ( 説明専用* )
template < std:: size_t I >
constexpr auto /*get-begin*/ ( ) ;
(3) ( 説明専用* )
template < std:: size_t I >
constexpr auto /*get-end*/ ( ) ;
(4) ( 説明専用* )
template < std:: size_t N >
constexpr auto /*to-underlying-diff-type*/ ( difference_type value ) ;
(5) ( 説明専用* )

ミニヘルパーテンプレートは、主要なヘルパーテンプレートとメンバー関数の記述を簡素化します。これらはC++標準文書には含まれていません。

1) it_ に含まれる基盤となるイテレータを取得する。
戻り値 std::get < N > ( it_  ) .
2) 親の I 番目のビューを concat_view から取得する。
Returns std::get < I > ( parent_  - > views_  ) .
3) 親の concat_view における I 番目のビューへのイテレータを取得する。
戻り値 ranges:: begin ( get-view  < I > ( ) ) .
4) 親の concat_view における I 番目のビューの終端イテレータまたはセンチネルを取得する。
Returns ranges:: end ( get-view  < I > ( ) ) .
**日本語訳:**
戻り値 ranges:: end ( get-view  < I > ( ) )
**変更点:** - "Returns" → "戻り値" - 文末のピリオド "." → 日本語の句点 "。" HTMLタグ、属性、C++コード(` `内)、` `タグ内のテキストは翻訳せず、元のフォーマットを保持しています。
5) 値を value から、 it_ に含まれる基底イテレータの基底差型に変換する。
Returns static_cast < std:: iter_difference_t < std:: variant_alternative_t < N, base-iter  >>> ( value ) .

(注:指定されたテキストブロック内に翻訳対象となる可読テキストが存在しないため、HTML構造はそのまま保持されています)

std::ranges::concat_view:: iterator :: satisfy <N>

template < std:: size_t N >
constexpr void /*satisfy*/ ( ) ;
( 説明専用* )

it_ の現在の(グローバルな)位置を調整します。

  • N sizeof... ( Views ) - 1 の場合、何もしません。
  • それ以外の場合、以下と等価です: if ( get-iter  < N > ( ) == get-end  < N > ( ) )
    {
    it_  . template emplace < N + 1 > ( get-begin  < N + 1 > ( ) ) ;
    satisfy  < N + 1 > ( ) ;
    }

std::ranges::concat_view:: iterator :: prev <N>

template < size_t N >
constexpr void /*prev*/ ( ) ;
( 説明専用* )

it_ を前の(グローバルな)位置に移動します。

  • N 0 の場合、 -- get-iter  < 0 > ( ) ; と等価です。
  • それ以外の場合、 if ( get-iter  < N > ( ) == get-begin  < N > ( ) )
    {
    it_  . template emplace < N - 1 > ( get-end  < N - 1 > ( ) ) ;
    prev  < N - 1 > ( ) ;
    }
    else
    -- get-iter  < N > ( ) ;
    と等価です。

std::ranges::concat_view:: iterator :: advance-fwd <N>

template < size_t N >

constexpr void /*advance-fwd*/ ( difference_type offset,

difference_type steps ) ;
( 説明専用* )

現在の(グローバルな)位置を step ステップ分前方に進めます。

パラメータ

offset - 現在の(グローバルな)位置の、 it_ が現在参照している範囲の先頭からのオフセット
steps - 前方に進めるステップ数

(注:指定されたテキストブロック内に翻訳対象となる可読テキストが存在しないため、HTML構造はそのまま保持されています)

std::ranges::concat_view:: iterator :: advance-bwd <N>

template < size_t N >

constexpr void /*advance-bwd*/ ( difference_type offset,

difference_type steps ) ;
( 説明専用* )

現在の(グローバルな)位置を steps ステップ分後方に進めます。

パラメータ

offset - 現在の(グローバルな)位置の、 it_ が現在参照する範囲の先頭からのオフセット
steps - 後方に進めるステップ数