std::ranges::concat_view<Views...>:: iterator <Const>:: satisfy , prev , advance-fwd , advance-bwd
다음 설명 전용 멤버 함수 템플릿들은 설명을 단순화합니다.
각 헬퍼 함수 템플릿은 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++ 표준 문서에 포함되지 않습니다.
it_
에 포함된 기본 반복자를 획득합니다.
concat_view
에서
I
번째 뷰를 획득합니다.
concat_view
의
I
번째 뷰의 시작 부분에 대한 반복자를 획득합니다.
get-view
<
I
>
(
)
)
.
concat_view
의
I
번째 뷰의 끝 반복자(past-the-end iterator) 또는 센티넬(sentinel)을 획득합니다.
get-view
<
I
>
(
)
)
.
base-iter
>>>
(
value
)
.
std::ranges::concat_view:: iterator :: satisfy <N>
|
template
<
std::
size_t
N
>
constexpr void /*satisfy*/ ( ) ; |
( 설명 전용* ) | |
it_
의 현재 (전역) 위치를 조정합니다.
std::ranges::concat_view:: iterator :: prev <N>
|
template
<
size_t N
>
constexpr void /*prev*/ ( ) ; |
( 설명 전용* ) | |
it_
를 이전 (전역) 위치로 이동시킵니다.
std::ranges::concat_view:: iterator :: advance-fwd <N>
|
template
<
size_t N
>
constexpr
void
/*advance-fwd*/
(
difference_type offset,
|
( 설명 전용* ) | |
현재 (전역) 위치를 step 만큼 앞으로 전진시킵니다.
-
만약
N
이
sizeof...
(
Views
)
-
1
인 경우, 다음 코드와 동등합니다:
get-iter < N > ( ) + =to-underlying-diff-type ( steps ) ; . -
그렇지 않은 경우, 다음 코드와 동등합니다:
auto
n_size
=
ranges::
distance
(
get-view < N > ( ) ) ) ;
if ( offset + steps < n_size )
get-iter < N > ( ) + =to-underlying-diff-type ( steps ) ;
else
{
it_ . template emplace < N + 1 > (get-begin < N + 1 > ( ) ) ;
advance-fwd < N + 1 > ( 0 , offset + steps - n_size ) ;
} .
매개변수
| offset | - |
현재 (전역) 위치의 오프셋으로,
it_
이 현재 참조하는 범위의 시작점부터의 거리
|
| steps | - | 앞으로 전진할 단계 수 |
std::ranges::concat_view:: iterator :: advance-bwd <N>
|
template
<
size_t N
>
constexpr
void
/*advance-bwd*/
(
difference_type offset,
|
( 설명 전용* ) | |
현재 (전역) 위치를 steps 단계만큼 뒤로 이동합니다.
-
만약
N
이
0
이면, 다음 코드와 동등합니다:
get-iter < N > ( ) - =to-underlying-diff-type ( steps ) ; . -
그렇지 않으면, 다음 코드와 동등합니다:
if
(
offset
>=
steps
)
get-iter < N > ( ) - =to-underlying-diff-type ( steps ) ;
else
{
auto prev_size = ranges:: distance (get-view < N - 1 > ( ) ) ;
it_ . template emplace < N - 1 > (get-end < N - 1 > ( ) ) ;
advance-bwd < N - 1 > ( prev_size, steps - offset ) ;
} .
매개변수
| offset | - |
현재 (전역) 위치가 현재 참조하는 범위
it_
의 시작점으로부터의 오프셋
|
| steps | - | 뒤로 이동할 단계 수 |