Namensräume
Varianten
Aktionen

std::ranges::join_with_view<V,Pattern>::iterator

Von cppreference.com
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
template< bool Const >
class /*iterator*/
(nur Exposition*)

ranges::join_with_view<V, Pattern>::iterator ist der Typ der Iteratoren, die von begin() und end() von ranges::join_with_view<V, Pattern> zurückgegeben werden.

Der Zustand eines Iterators dieser Klasse wird so verwaltet, als gäbe es zwei verschachtelte Iteratoren

  • ein äußerer Iterator in den übergeordneten Bereich *parent_
  • ein innerer Iterator inner_it_ in den Musterbereich parent_ ->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 wahren.

Inhalt

[edit] Template-Parameter

Const - ob der Iterator ein konstanter Iterator ist

[edit] Verschachtelte Typen

Nur-Exposition-Typen
Typ Definition
Parent maybe-const <Const, ranges::join_with_view<V, Pattern>>
((nur zur Veranschaulichung)*)
Base maybe-const <Const, V>
((nur zur Veranschaulichung)*)
InnerBase ranges::range_reference_t<Base >
((nur zur Veranschaulichung)*)
PatternBase maybe-const <Const, Pattern>
((nur zur Veranschaulichung)*)
OuterIter ranges::iterator_t<Base >
((nur zur Veranschaulichung)*)
InnerIter ranges::iterator_t<InnerBase >
((nur zur Veranschaulichung)*)
PatternIter ranges::iterator_t<PatternBase >
((nur zur Veranschaulichung)*)
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<InnerBase >,
                   ranges::range_value_t<PatternBase >>

difference_type

std::common_type_t<ranges::range_difference_t<Base >,
                   ranges::range_difference_t<InnerBase >,
                   ranges::range_difference_t<PatternBase >>

[edit] Bestimmung des Iterator-Konzepts

iterator_concept ist wie folgt definiert

[edit] Bestimmung der Iterator-Kategorie

Gegeben die folgenden Typen

iterator_category ist definiert genau dann, wenn std::is_reference_v<InnerBase > true ist und Base und InnerBase jeweils forward_range modellieren. In diesem Fall ist es wie folgt definiert

[edit] Datenmember

Mitglied Beschreibung
Parent * parent_ der Zeiger auf die übergeordnete join_with_view
((exposition-only member object*)
OuterIter outer_it_
(nur vorhanden, wenn Base forward_range modelliert)
der äußere Iterator
((exposition-only member object*)
std::variant<PatternIter , InnerIter > inner_it_ der innere Iterator
((exposition-only member object*)

[edit] Member-Funktionen

Konstruiert einen Iterator
(öffentliche Memberfunktion)
greift auf das Element zu
(öffentliche Memberfunktion)
bewegt den zugrundeliegenden Iterator vorwärts oder rückwärts
(public member function) [edit]

[edit] Nicht-Member-Funktionen

vergleicht die zugrundeliegenden Iteratoren
(Funktion)
(C++23)
castet das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen rvalue-Referenztyp
(Funktion)
(C++23)
tauscht die Objekte, auf die zwei zugrundeliegende Iteratoren zeigen
(Funktion)