std::ranges::split_view<V,Pattern>:: iterator
|
class
/*iterator*/
;
|
(C++20以降)
( 説明専用* ) |
|
split_view::begin
の戻り値型。これは
forward_iterator
であり、したがって
V
は少なくとも
forward_range
をモデル化することが期待されます。
メンバー型
| メンバー型 | 定義 |
iterator_concept
|
std::forward_iterator_tag |
iterator_category
|
std::input_iterator_tag |
value_type
|
ranges:: subrange < ranges:: iterator_t < V >> |
difference_type
|
ranges:: range_difference_t < V > |
データメンバ
| メンバー | 説明 |
ranges::
split_view
<
V, Pattern
>
*
parent_
(private)
|
親
split_view
オブジェクトへのポインタ
( 説明専用メンバーオブジェクト* ) |
ranges::
iterator_t
<
V
>
cur_
(private)
|
基となる
view
内の、現在のサブレンジの先頭を指すイテレータ
( 説明専用メンバーオブジェクト* ) |
ranges::
subrange
<
ranges::
iterator_t
<
V
>>
next_
(private)
|
現在のサブレンジの次のパターンの位置へのサブレンジ
( 説明専用メンバーオブジェクト* ) |
bool
trailing_empty_
(private)
|
空の末尾サブレンジ(存在する場合)に到達したかどうかを示すフラグ
( 説明専用メンバーオブジェクト* ) |
メンバー関数
|
(constructor)
(C++20)
|
イテレータを構築する
(公開メンバ関数) |
|
base
(C++20)
|
基となるイテレータを返す
(公開メンバ関数) |
|
operator*
(C++20)
|
現在のサブレンジを返す
(公開メンバ関数) |
|
operator++
operator++
(int)
(C++20)
|
イテレータを進める
(公開メンバ関数) |
std::ranges::split_view:: iterator :: iterator
|
/*iterator*/
(
)
=
default
;
|
(1) | (C++20以降) |
|
constexpr
/*iterator*/
(
split_view
&
parent,
ranges::
iterator_t
<
V
>
current,
ranges:: subrange < ranges:: iterator_t < V >> next ) ; |
(2) | (C++20以降) |
- ranges:: split_view * parent_ = nullptr ; 、
- ranges:: iterator_t < V > cur_ = ranges:: iterator_t < V > ( ) ; 、
- ranges:: subrange < ranges:: iterator_t < V >> next_ = ranges:: subrange < ranges:: iterator_t < V >> ( ) ; 、および
- bool trailing_empty_ = false ; 。
- ranges:: split_view * parent_ = std:: addressof ( parent ) ; 、
- ranges:: iterator_t < V > cur_ = std :: move ( current ) ; 、
- ranges:: subrange < ranges:: iterator_t < V >> next_ = std :: move ( next ) ; 、および
- bool trailing_empty_ = false ; 。
std::ranges::split_view:: iterator :: base
|
constexpr
const
ranges::
iterator_t
<
V
>
base
(
)
const
;
|
(C++20以降) | |
return cur_ ; と等価。
std::ranges::split_view:: iterator :: operator*
|
constexpr
value_type operator
*
(
)
const
;
|
(C++20以降) | |
return { cur_, next_. begin ( ) } ; と等価。
std::ranges::split_view:: iterator :: operator++
|
constexpr
/*iterator*/
&
operator
++
(
)
;
|
(1) | (C++20以降) |
|
constexpr
void
operator
++
(
int
)
;
|
(2) | (C++20以降) |
cur_ = next_. begin ( ) ;
if
(
cur_
!
=
ranges::
end
(
parent_
-
>
base_
)
)
{
if
(
cur_
=
next_.
end
(
)
;
cur_
==
ranges::
end
(
parent_
-
>
base_
)
)
{
trailing_empty_
=
true
;
next_
=
{
cur_, cur_
}
;
}
else
next_
=
parent_
-
>
find_next
(
cur_
)
;
}
else
trailing_empty_
=
false
;
非メンバー関数
|
operator==
(C++20)
|
基底となるイテレータを比較する
(関数) |
operator== (std::ranges::split_view:: iterator , std::ranges::split_view:: iterator )
|
friend
constexpr
bool
operator
==
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
;
|
(C++20以降) | |
x.cur_ == y.cur_ and x.trailing_empty_ == y.trailing_empty_;
と等価。
!=
演算子は
合成された
operator==
から生成される。
この関数は通常の
非修飾名探索
または
修飾名探索
では可視化されず、
std::ranges::split_view::
iterator
が引数の関連クラスである場合にのみ
実引数依存探索
によって発見される。