std::ranges::join_with_view<V,Pattern>:: iterator
|
template
<
bool
Const
>
class /*iterator*/ |
( 설명 전용* ) | |
ranges::
join_with_view
<
V, Pattern
>
::
iterator
는
begin()
과
end()
가 반환하는 반복자의 타입입니다.
ranges::
join_with_view
<
V, Pattern
>
의
이 클래스의 반복자 상태는 두 개의 중첩된 반복자가 있는 것처럼 관리됩니다:
-
부모 범위로의
외부 반복자
*
parent_
-
-
만약
Base가forward_range를 모델링하면, 이것은outer_it_입니다. -
그렇지 않으면, 이것은
parent_ - >outer_it_입니다.
-
만약
이 반복자 클래스는 내부 반복자가 항상 역참조 가능하다는 불변 조건을 가지며, 외부 반복자가 역참조 불가능한 경우는 예외입니다. 반복자가 생성되거나 증가/감소될 때, 이 불변 조건을 유지하기 위해 외부 반복자가 조정될 수 있습니다.
목차 |
템플릿 매개변수
| Const | - | 반복자가 상수 반복자인지 여부 |
중첩 타입
설명 전용 타입 |
|
| 타입 | 정의 |
Parent
|
maybe-const
<
Const,
ranges::
join_with_view
<
V, Pattern
>>
( 설명 전용 멤버 타입* ) |
Base
|
maybe-const
<
Const, V
>
( 설명 전용 멤버 타입* ) |
InnerBase
|
ranges::
range_reference_t
<
Base
>
( 설명 전용 멤버 타입* ) |
PatternBase
|
maybe-const
<
Const, Pattern
>
( 설명 전용 멤버 타입* ) |
OuterIter
|
ranges::
iterator_t
<
Base
>
( 설명 전용 멤버 타입* ) |
InnerIter
|
ranges::
iterator_t
<
InnerBase
>
( 설명 전용 멤버 타입* ) |
PatternIter
|
ranges::
iterator_t
<
PatternBase
>
( 설명 전용 멤버 타입* ) |
반복자 속성 타입 |
|
| 타입 | 정의 |
iterator_concept
|
반복자 태그 , 아래 참조 |
iterator_category
(조건부 존재) |
반복자 태그, 아래 참조 |
value_type
|
std::
common_type_t
<
ranges::
range_value_t
<
|
difference_type
|
std::
common_type_t
<
ranges::
range_difference_t
<
|
반복자 개념 결정
iterator_concept
는 다음과 같이 정의됩니다:
-
다음 조건들이 모두 충족되면,
iterator_concept은 std::bidirectional_iterator_tag 을 나타냅니다:-
std::
is_reference_v
<
InnerBase > 가 true 인 경우. -
Base가bidirectional_range를 모델링하는 경우. -
InnerBase와PatternBase가 각각common_range를 모델링하는 경우.
-
std::
is_reference_v
<
-
그렇지 않고 다음 조건들이 모두 충족되면,
iterator_concept은 std::forward_iterator_tag 을 나타냅니다:-
std::
is_reference_v
<
InnerBase > 가 true 인 경우. -
Base와InnerBase가 각각forward_range를 모델링하는 경우.
-
std::
is_reference_v
<
-
그렇지 않으면,
iterator_concept은 std::input_iterator_tag 을 나타냅니다.
반복자 카테고리 결정
주어진 타입들:
-
OuterC를 std:: iterator_traits <OuterIter > :: iterator_category 로 정의합니다. -
InnerC를 std:: iterator_traits <InnerIter > :: iterator_category 로 정의합니다. -
PatternC를 std:: iterator_traits <PatternIter > :: iterator_category 로 정의합니다.
iterator_category
는 다음 조건이 충족될 때만 정의됩니다:
std::
is_reference_v
<
InnerBase
>
가
true
이고,
Base
와
InnerBase
가 각각
forward_range
를 모델링하는 경우입니다. 이 경우 다음과 같이 정의됩니다:
-
만약
std::
is_reference_v
<
std::
common_reference_t
<
ranges::
range_reference_t
<
InnerBase > ,
ranges:: range_reference_t <PatternBase >> 가 false 인 경우,iterator_category는 std::input_iterator_tag 를 나타냅니다. -
그렇지 않고 다음 조건들이 모두 충족되면,
iterator_category는 std::bidirectional_iterator_tag 를 나타냅니다:-
OuterC,InnerC, 그리고PatternC가 각각 std:: derived_from < std:: bidirectional_iterator_tag > 를 만족하는 경우 -
InnerBase와PatternBase가 각각common_range를 만족하는 경우
-
-
그렇지 않고
OuterC,InnerC, 그리고PatternC가 각각 std:: derived_from < std:: forward_iterator_tag > 를 만족하면,iterator_category는 std::forward_iterator_tag 를 나타냅니다. -
그 외의 경우,
iterator_category는 std::input_iterator_tag 를 나타냅니다.
데이터 멤버
| 멤버 | 설명 |
Parent
*
parent_
|
부모
join_with_view
에 대한 포인터
( 설명 전용 멤버 객체* ) |
OuterIter
outer_it_
(
Base
가
forward_range
를 모델링하는 경우에만 존재)
|
외부 반복자
( 설명 전용 멤버 객체* ) |
std::
variant
<
PatternIter
,
InnerIter
>
inner_it_
|
내부 반복자
( 설명 전용 멤버 객체* ) |
멤버 함수
|
iterator를 생성한다
(public member function) |
|
|
요소에 접근한다
(public member function) |
|
|
내부 iterator를 전진시키거나 후퇴시킨다
(public member function) |
비멤버 함수
|
(C++23)
|
기본 반복자를 비교함
(함수) |
|
(C++23)
|
기본 반복자를 역참조한 결과를 해당 rvalue 참조 타입으로 변환함
(함수) |
|
(C++23)
|
두 기본 반복자가 가리키는 객체를 교환함
(함수) |