std::ranges::filter_view<V,Pred>:: iterator
|
class
/*iterator*/
;
|
(C++20부터)
( 설명 전용* ) |
|
filter_view::begin 의 반환 타입.
V
가
bidirectional_iterator
를 모델링하면
bidirectional_range
,
V
가
forward_iterator
를 모델링하면
forward_range
, 그렇지 않으면
input_iterator
입니다.
이 반복자가 나타내는 요소의 수정은 허용되지만, 결과 값이 필터의 조건자를 만족하지 않을 경우 정의되지 않은 동작이 발생합니다.
멤버 타입
| 유형 | 정의 |
iterator_concept
|
|
iterator_category
(
V
가
forward_range
를 모델링하는 경우에만 존재)
|
|
value_type
|
ranges:: range_value_t < V > |
difference_type
|
ranges:: range_difference_t < V > |
데이터 멤버
| 멤버 | 설명 |
ranges::
iterator_t
<
V
>
current_
(비공개)
|
기본
view
에 대한 반복자
( 설명 전용 멤버 객체* ) |
ranges::
filter_view
<
V, Pred
>
*
parent_
(비공개)
|
상위
filter_view
객체에 대한 포인터
( 설명 전용 멤버 객체* ) |
멤버 함수
|
반복자를 생성합니다
(public member function) |
|
|
기본 반복자를 반환합니다
(public member function) |
|
|
기본 반복자로 전달합니다
(public member function) |
|
|
반복자를 전진시킵니다
(public member function) |
|
|
반복자를 감소시킵니다
(public member function) |
std::ranges::filter_view:: iterator :: iterator
|
/*iterator*/
(
)
requires std:: default_initializable < ranges:: iterator_t < V >> = default ; |
(1) | (since C++20) |
|
constexpr
/*iterator*/
(
filter_view
&
parent,
ranges:: iterator_t < V > current ) ; |
(2) | (since C++20) |
std::ranges::filter_view:: iterator :: base
|
constexpr
const
ranges::
iterator_t
<
V
>
&
base
(
)
const
&
noexcept
;
|
(1) | (C++20 이후) |
|
constexpr
ranges::
iterator_t
<
V
>
base
(
)
&&
;
|
(2) | (C++20 이후) |
std::ranges::filter_view:: iterator :: operator*,->
|
constexpr
ranges::
range_reference_t
<
V
>
operator
*
(
)
const
;
|
(1) | (C++20 이후) |
|
constexpr
ranges::
iterator_t
<
V
>
operator
-
>
(
)
const
requires
/*has-arrow*/
<
ranges::
iterator_t
<
V
>>
&&
|
(2) | (C++20 이후) |
타입
I
에 대해,
/*has-arrow*/
<
I
>
가 모델링되거나 만족되는 것은,
I
가 각각
input_iterator
를 모델링하거나 만족하고,
I
가 포인터 타입이거나
requires
(
I i
)
{
i.
operator
-
>
(
)
;
} 가
true
인 경우에만 해당함.
std::ranges::filter_view:: iterator :: operator++
|
constexpr
/*iterator*/
&
operator
++
(
)
;
|
(1) | (C++20부터) |
|
constexpr
void
operator
++
(
int
)
;
|
(2) | (C++20부터) |
|
constexpr
/*iterator*/
operator
++
(
int
)
requires ranges:: forward_range < V > ; |
(3) | (C++20부터) |
current_ = ranges:: find_if ( std :: move ( ++ current_ ) , ranges:: end ( parent_ - > base_ ) ,
std:: ref ( * parent_ - > pred_ ) ) ;
return * this ; .
std::ranges::filter_view:: iterator :: operator--
|
constexpr
/*iterator*/
&
operator
--
(
)
requires ranges:: bidirectional_range < V > ; |
(1) | (C++20 이후) |
|
constexpr
/*iterator*/
operator
--
(
int
)
requires ranges:: bidirectional_range < V > ; |
(2) | (C++20 이후) |
do
-- current_ ;
while ( ! std:: invoke ( * parent_ - > pred_, * current_ ) ) ;
return * this ; .
비멤버 함수
|
(C++20)
|
기본 반복자를 비교함
(함수) |
|
(C++20)
|
기본 반복자를 역참조한 결과를 해당 rvalue 참조 타입으로 변환함
(함수) |
|
(C++20)
|
두 기본 반복자가 가리키는 객체를 교환함
(함수) |
operator== (std::ranges::filter_view:: iterator )
|
friend
constexpr
bool
operator
==
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
requires std:: equality_comparable < ranges:: iterator_t < V >> ; |
(C++20 이후) | |
return x. current_ == y. current_ ; 와 동등합니다.
!=
연산자는
합성된
연산자로,
operator==
로부터 생성됩니다.
이 함수는 일반적인
비한정 이름 검색
이나
한정 이름 검색
으로는 보이지 않으며,
std::ranges::filter_view::
iterator
가 인자들의 연관 클래스일 때만
인자 종속 이름 검색
에 의해 찾을 수 있습니다.
iter_move (std::ranges::filter_view:: iterator )
|
friend
constexpr
ranges::
range_rvalue_reference_t
<
V
>
iter_move
(
const
/*iterator*/
&
i
)
|
(C++20 이후) | |
다음 코드와 동일합니다: return ranges:: iter_move ( i. current_ ) ; .
이 함수는 일반적인
비한정 이름查找
또는
한정 이름查找
에는 보이지 않으며,
std::ranges::filter_view::
iterator
가 인자들의 연관 클래스일 때만
인자 의존查找
에 의해 찾을 수 있습니다.
iter_swap (std::ranges::filter_view:: iterator )
|
friend
constexpr
void
iter_swap
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
noexcept
(
noexcept
(
ranges::
iter_swap
(
x.
current_
, y.
current_
)
)
)
|
(C++20 이후) | |
ranges:: iter_swap ( x. current_ , y. current_ ) 와 동등합니다.
이 함수는 일반적인
비한정 이름查找
또는
한정 이름查找
으로는 보이지 않으며,
std::ranges::filter_view::
iterator
이 인자들의 연관 클래스일 때만
인자 종속查找
에 의해 찾을 수 있습니다.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P2259R1 | C++20 |
멤버 타입
iterator_category
가 항상 정의됨
|
V
가
forward_range
인 경우에만 정의됨
|
| LWG 3533 | C++20 |
base
의
const
&
오버로드가 기본 반복자를 복사함
|
해당 반복자에 대한 참조를 반환함 |
| LWG 3593 | C++20 |
base
의
const
&
오버로드가 noexcept가 아닐 수 있음
|
noexcept로 지정됨 |