std::ranges::join_with_view<V,Pattern>:: iterator
|
template
<
bool
Const
>
class /*iterator*/ |
( exposition uniquement* ) | |
ranges::
join_with_view
<
V, Pattern
>
::
iterator
est le type des itérateurs retournés par
begin()
et
end()
de
ranges::
join_with_view
<
V, Pattern
>
.
L'état d'un itérateur de cette classe est géré comme s'il y avait deux itérateurs imbriqués :
-
un
itérateur externe
dans la plage parente
*
parent_
-
-
Si
Basemodéliseforward_range, il s'agit deouter_it_. -
Sinon, il s'agit de
parent_ - >outer_it_.
-
Si
-
un
itérateur interne
inner_it_dans la plage de motifparent_ - >pattern_ou dans une plage enfant de la plage parent
Cette classe d'itérateur a pour invariant que l'itérateur interne est toujours déréférençable sauf si l'itérateur externe n'est pas déréférençable. Lorsqu'un itérateur est construit, incrémenté ou décrémenté, son itérateur externe peut être ajusté pour maintenir l'invariant.
Table des matières |
Paramètres du modèle
| Const | - | indique si l'itérateur est un itérateur constant |
Types imbriqués
Types d'exposition uniquement |
|
| Type | Définition |
Parent
|
maybe-const
<
Const,
ranges::
join_with_view
<
V, Pattern
>>
( type membre d'exposition uniquement* ) |
Base
|
maybe-const
<
Const, V
>
( type membre d'exposition uniquement* ) |
InnerBase
|
ranges::
range_reference_t
<
Base
>
( type membre d'exposition uniquement* ) |
PatternBase
|
maybe-const
<
Const, Pattern
>
( type membre d'exposition uniquement* ) |
OuterIter
|
ranges::
iterator_t
<
Base
>
( type membre d'exposition uniquement* ) |
InnerIter
|
ranges::
iterator_t
<
InnerBase
>
( type membre d'exposition uniquement* ) |
PatternIter
|
ranges::
iterator_t
<
PatternBase
>
( type membre d'exposition uniquement* ) |
Types de propriétés d'itérateur |
|
| Type | Définition |
iterator_concept
|
un tag d'itérateur , voir ci-dessous |
iterator_category
(conditionnellement présent) |
un tag d'itérateur, voir ci-dessous |
value_type
|
std::
common_type_t
<
ranges::
range_value_t
<
|
difference_type
|
std::
common_type_t
<
ranges::
range_difference_t
<
|
Détermination du concept d'itérateur
iterator_concept
est défini comme suit :
-
Si toutes les conditions suivantes sont satisfaites,
iterator_conceptdénote std::bidirectional_iterator_tag :-
std::
is_reference_v
<
InnerBase > est true . -
Basemodélisebidirectional_range. -
InnerBaseetPatternBasemodélisent chacuncommon_range.
-
std::
is_reference_v
<
-
Sinon, si toutes les conditions suivantes sont satisfaites,
iterator_conceptdénote std::forward_iterator_tag :-
std::
is_reference_v
<
InnerBase > est true . -
BaseetInnerBasemodélisent chacunforward_range.
-
std::
is_reference_v
<
-
Sinon,
iterator_conceptdénote std::input_iterator_tag .
Détermination de la catégorie d'itérateur
Étant donné les types suivants :
-
Soit
OuterCle std:: iterator_traits <OuterIter > :: iterator_category . -
Soit
InnerCle std:: iterator_traits <InnerIter > :: iterator_category . -
Soit
PatternCle std:: iterator_traits <PatternIter > :: iterator_category .
iterator_category
est défini si et seulement si
std::
is_reference_v
<
InnerBase
>
est
true
, et
Base
et
InnerBase
modélisent chacun
forward_range
. Dans ce cas, il est défini comme suit :
-
Si
std::
is_reference_v
<
std::
common_reference_t
<
ranges::
range_reference_t
<
InnerBase > ,
ranges:: range_reference_t <PatternBase >> est false ,iterator_categorydénote std::input_iterator_tag . -
Sinon, si toutes les conditions suivantes sont satisfaites,
iterator_categorydénote std::bidirectional_iterator_tag :-
OuterC,InnerC, etPatternCmodélisent chacun std:: derived_from < std:: bidirectional_iterator_tag > . -
InnerBaseetPatternBasemodélisent chacuncommon_range.
-
-
Sinon, si
OuterC,InnerC, etPatternCmodélisent chacun std:: derived_from < std:: forward_iterator_tag > ,iterator_categorydénote std::forward_iterator_tag . -
Sinon,
iterator_categorydénote std::input_iterator_tag .
Membres de données
| Membre | Description |
Parent
*
parent_
|
le pointeur vers le parent
join_with_view
( objet membre d'exposition uniquement* ) |
OuterIter
outer_it_
(présent seulement si
Base
modélise
forward_range
)
|
l'itérateur externe
( objet membre d'exposition uniquement* ) |
std::
variant
<
PatternIter
,
InnerIter
>
inner_it_
|
l'itérateur interne
( objet membre d'exposition uniquement* ) |
Fonctions membres
|
construit un itérateur
(fonction membre publique) |
|
|
accède à l'élément
(fonction membre publique) |
|
|
avance ou décrémente l'itérateur sous-jacent
(fonction membre publique) |
Fonctions non membres
|
(C++23)
|
compare les itérateurs sous-jacents
(fonction) |
|
(C++23)
|
convertit le résultat du déréférencement de l'itérateur sous-jacent en son type de référence rvalue associé
(fonction) |
|
(C++23)
|
échange les objets pointés par deux itérateurs sous-jacents
(fonction) |