std::ranges::cartesian_product_view<First, Vs...>:: iterator <Const>:: next , std::ranges::cartesian_product_view<First, Vs...>:: iterator <Const>:: prev , std::ranges::cartesian_product_view<First, Vs...>:: iterator <Const>:: distance_from
목차 |
std::ranges::cartesian_product_view:: iterator :: next
|
template
<
std::
size_t
N
=
sizeof...
(
Vs
)
>
constexpr void /*next*/ ( ) ; |
(C++23부터)
( 설명 전용* ) |
|
기본 템플릿 매개변수로 호출될 경우,
cartesian_product_view
에서 다음 요소(반복자들의 튜플)를 재귀적으로 생성합니다.
current_
를 기반 반복자들의 튜플로 가정합니다. 다음 코드와 동등합니다:
auto& it = std::get<N>(current_); ++it; if constexpr (N > 0) { if (it == ranges::end(std::get<N>(parent_->bases_))) { it = ranges::begin(std::get<N>(parent_->bases_)); next<N - 1>(); } }
다음 비정적 멤버 함수들에서 사용됩니다:
-
ranges
::
cartesian_product_view
::
operator+
std::ranges::cartesian_product_view:: iterator :: prev
|
template
<
std::
size_t
N
=
sizeof...
(
Vs
)
>
constexpr void /*prev*/ ( ) ; |
(C++23부터)
( 설명 전용* ) |
|
기본 템플릿 매개변수로 호출될 경우,
cartesian_product_view
에서 이전 요소(반복자들의 튜플)를 재귀적으로 생성합니다.
current_
를 기반 반복자들의 튜플로 가정합니다. 다음 코드와 동등합니다:
auto& it = std::get<N>(current_); if constexpr (N > 0) { if (it == ranges::begin(std::get<N>(parent_->bases_))) { it = /*cartesian-common-arg-end*/(std::get<N>(parent_->bases_)); prev<N - 1>(); } } --it;
다음 비정적 멤버 함수에서 사용됩니다:
-
ranges
::
cartesian_product_view
::
operator-
std::ranges::cartesian_product_view:: iterator :: distance_from
|
template
<
class
Tuple
>
constexpr
difference_type
|
(since C++23)
( 설명 전용* ) |
|
두 이터레이터 사이의 "거리"(즉, "이동" 횟수)를 반환합니다.
다음을 정의합니다:
-
parent_는 기본cartesian_product_view에 대한 포인터 -
/*scaled-size*/
(
N
)
는:
- static_cast < difference_type > ( ranges:: size ( std :: get < N > ( parent_ - > bases_ ) ) ) 과 /*scaled-size*/ ( N + 1 ) 의 곱, 단 N ≤ sizeof... ( Vs ) 인 경우, 그렇지 않으면
- static_cast < difference_type > ( 1 ) ;
- /*scaled-distance*/ ( N ) 는 static_cast < difference_type > ( std :: get < N > ( current_ ) - std :: get < N > ( t ) ) 과 /*scaled-size*/ ( N + 1 ) ; 의 곱
- /*scaled-sum*/ 는 모든 정수 0 ≤ N ≤ sizeof... ( Vs ) 에 대한 /*scaled-distance*/ ( N ) 의 합
반환값: /*scaled-sum*/ .
/*scaled-sum*/
이
difference_type
으로 표현될 수 없는 경우 동작은 정의되지 않습니다.
다음 함수들에서 사용됩니다:
-
operator-( const /*iterator*/ & , const /*iterator*/ & ) -
operator-( const /*iterator*/ & , std:: default_sentinel_t )
매개변수
| t | - | 거리를 구할 이터레이터들의 튜플 |