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) 부모 concat_view 에서 I 번째 뷰를 획득합니다.
반환 std::get < I > ( parent_  - > views_  ) .
3) 부모 concat_view I 번째 뷰의 시작 부분에 대한 반복자를 획득합니다.
반환 ranges:: begin ( get-view  < I > ( ) ) .
4) 부모 concat_view I 번째 뷰의 끝 반복자(past-the-end iterator) 또는 센티넬(sentinel)을 획득합니다.
반환 ranges:: end ( get-view  < I > ( ) ) .
5) value it_ 에 포함된 기본 반복자의 기본 차이 유형으로 변환합니다.
반환값 static_cast < std:: iter_difference_t < std:: variant_alternative_t < N, base-iter  >>> ( value ) .

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 - 앞으로 전진할 단계 수

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 - 뒤로 이동할 단계 수