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
>
の。
このクラスのイテレータの状態は、2つのネストしたイテレータが存在するかのように管理されます:
-
親範囲への
外部イテレータ
*
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_
|
内側イテレータ
( 説明専用メンバーオブジェクト* ) |
メンバー関数
|
イテレータを構築する
(public member function) |
|
|
要素にアクセスする
(public member function) |
|
|
基盤となるイテレータを進めるまたは戻す
(public member function) |
非メンバー関数
|
(C++23)
|
基底となるイテレータを比較する
(関数) |
|
(C++23)
|
基底となるイテレータをデリファレンスした結果を、関連付けられた右辺値参照型にキャストする
(関数) |
|
(C++23)
|
2つの基底となるイテレータが指すオブジェクトを交換する
(関数) |