std::ranges::join_with_view<V,Pattern>:: iterator
|
template
<
bool
Const
>
class /*iterator*/ |
( Nur zur Darstellung* ) | |
ranges::
join_with_view
<
V, Pattern
>
::
iterator
ist der Typ der Iteratoren, die von
begin()
und
end()
des
ranges::
join_with_view
<
V, Pattern
>
zurückgegeben werden.
Der Zustand eines Iterators dieser Klasse wird so verwaltet, als ob es zwei verschachtelte Iteratoren gäbe:
-
einen
äußeren Iterator
in den übergeordneten Bereich
*
parent_
-
-
Falls
Baseeinforward_rangemodelliert, ist esouter_it_. -
Andernfalls ist es
parent_ - >outer_it_.
-
Falls
-
ein
innerer Iterator
inner_it_in den Pattern-Bereichparent_ - >pattern_oder in einen Unterbereich des übergeordneten Bereichs
Diese Iterator-Klasse hat die Invariante, dass der innere Iterator immer dereferenzierbar ist, es sei denn, der äußere Iterator ist nicht dereferenzierbar. Wenn ein Iterator konstruiert, inkrementiert oder dekrementiert wird, kann sein äußerer Iterator angepasst werden, um die Invariante zu erhalten.
Inhaltsverzeichnis |
Template-Parameter
| Const | - | ob der Iterator ein konstanter Iterator ist |
Verschachtelte Typen
Nur zur Darstellung verwendete Typen |
|
| Typ | Definition |
Parent
|
maybe-const
<
Const,
ranges::
join_with_view
<
V, Pattern
>>
( Nur zur Darstellung verwendeter Membertyp* ) |
Base
|
maybe-const
<
Const, V
>
( Nur zur Darstellung verwendeter Membertyp* ) |
InnerBase
|
ranges::
range_reference_t
<
Base
>
( Nur zur Darstellung verwendeter Membertyp* ) |
PatternBase
|
maybe-const
<
Const, Pattern
>
( Nur zur Darstellung verwendeter Membertyp* ) |
OuterIter
|
ranges::
iterator_t
<
Base
>
( Nur zur Darstellung verwendeter Membertyp* ) |
InnerIter
|
ranges::
iterator_t
<
InnerBase
>
( Nur zur Darstellung verwendeter Membertyp* ) |
PatternIter
|
ranges::
iterator_t
<
PatternBase
>
( Nur zur Darstellung verwendeter Membertyp* ) |
Iterator-Eigenschaftstypen |
|
| Typ | Definition |
iterator_concept
|
ein Iterator-Tag , siehe unten |
iterator_category
(bedingt vorhanden) |
ein Iterator-Tag, siehe unten |
value_type
|
std::
common_type_t
<
ranges::
range_value_t
<
|
difference_type
|
std::
common_type_t
<
ranges::
range_difference_t
<
|
Bestimmung des Iterator-Konzepts
iterator_concept
ist wie folgt definiert:
-
Wenn alle folgenden Bedingungen erfüllt sind,
bezeichnet
iterator_conceptstd::bidirectional_iterator_tag :-
std::
is_reference_v
<
InnerBase > ist true . -
Basemodelliertbidirectional_range. -
InnerBaseundPatternBasemodellieren jeweilscommon_range.
-
std::
is_reference_v
<
-
Andernfalls, wenn alle folgenden Bedingungen erfüllt sind,
bezeichnet
iterator_conceptstd::forward_iterator_tag :-
std::
is_reference_v
<
InnerBase > ist true . -
BaseundInnerBasemodellieren jeweilsforward_range.
-
std::
is_reference_v
<
-
Andernfalls
bezeichnet
iterator_conceptstd::input_iterator_tag .
Bestimmung der Iteratorkategorie
Gegeben die folgenden Typen:
-
Sei
OuterCgleich std:: iterator_traits <OuterIter > :: iterator_category . -
Sei
InnerCgleich std:: iterator_traits <InnerIter > :: iterator_category . -
Sei
PatternCgleich std:: iterator_traits <PatternIter > :: iterator_category .
iterator_category
ist genau dann definiert, wenn
std::
is_reference_v
<
InnerBase
>
true
ist und sowohl
Base
als auch
InnerBase
jeweils
forward_range
modellieren. In diesem Fall ist es wie folgt definiert:
-
Falls
std::
is_reference_v
<
std::
common_reference_t
<
ranges::
range_reference_t
<
InnerBase > ,
ranges:: range_reference_t <PatternBase >> false ist, bezeichnetiterator_categorystd::input_iterator_tag . -
Andernfalls, falls alle folgenden Bedingungen erfüllt sind,
bezeichnet
iterator_categorystd::bidirectional_iterator_tag :-
OuterC,InnerCundPatternCmodellieren jeweils std:: derived_from < std:: bidirectional_iterator_tag > . -
InnerBaseundPatternBasemodellieren jeweilscommon_range.
-
-
Andernfalls, falls
OuterC,InnerCundPatternCjeweils std:: derived_from < std:: forward_iterator_tag > modellieren, bezeichnetiterator_categorystd::forward_iterator_tag . -
Andernfalls bezeichnet
iterator_categorystd::input_iterator_tag .
Datenmitglieder
| Member | Beschreibung |
Parent
*
parent_
|
der Zeiger auf das übergeordnete
join_with_view
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
OuterIter
outer_it_
(nur vorhanden, wenn
Base
das Konzept
forward_range
modelliert)
|
der äußere Iterator
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
std::
variant
<
PatternIter
,
InnerIter
>
inner_it_
|
der innere Iterator
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
Memberfunktionen
|
Konstruiert einen Iterator
(öffentliche Elementfunktion) |
|
|
greift auf das Element zu
(öffentliche Elementfunktion) |
|
|
erhöht oder verringert den zugrundeliegenden Iterator
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
(C++23)
|
vergleicht die zugrunde liegenden Iteratoren
(Funktion) |
|
(C++23)
|
wandelt das Ergebnis der Dereferenzierung des zugrunde liegenden Iterators in seinen zugehörigen Rvalue-Referenztyp um
(Funktion) |
|
(C++23)
|
vertauscht die von zwei zugrunde liegenden Iteratoren referenzierten Objekte
(Funktion) |