Namespaces
Variants

std::ranges::concat_view<Ansichten...>::iterator

Von de.cppreference.net
 
 
Bereichsbibliothek
Bereichsadaptoren
 
 
template< bool Const >
class /*iterator*/
(1) (nur zur Erläuterung*)
Hilfskonzepte
template< bool Const, class... Rs >
concept /*concat-is-random-access*/ = /* see description */;
(2) (nur zur Erläuterung*)
template< bool Const, class... Rs >
concept /*concat-is-bidirectional*/ = /* see description */;
(3) (nur zur Erläuterung*)
1) ranges::concat_view<Views...>::iterator ist der Typ der von begin() und end() von ranges::concat_view<Views...> zurückgegebenen Iteratoren.
2) Sei Fs das Paket, das aus allen Elementen von Rs mit Ausnahme des letzten Elements besteht. Äquivalent zu

template<bool Const, class... Rs>
concept concat-is-random-access = // exposition only
    all-random-access <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.
3) Sei Fs das Paket, das aus allen Elementen von Rs mit Ausnahme des letzten Elements besteht. Äquivalent zu

template<bool Const, class... Rs>
concept concat-is-bidirectional = // exposition only
    all-bidirectional <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.

Template-Parameter

Const - ob der Iterator ein konstanter Iterator ist

Verschachtelte Typen

Nur-Darstellungs-Typen
Typ Definition
base-iter std:: variant < ranges:: iterator_t < maybe-const  < Const, Views >> ... >
( Nur-Darstellungs-Membertyp* )
Iterator-Eigenschaftstypen
Typ Definition
iterator_concept ein Iterator-Tag , siehe unten
iterator_category
(bedingt vorhanden)
ein Iterator-Tag, siehe unten
value_type concat-value-t  < maybe-const  < Const, Views > ... >
difference_type

std:: common_type_t < ranges:: range_difference_t < maybe-const  < Const, Views >> ... >

Bestimmung des Iterator-Konzepts

iterator_concept ist wie folgt definiert:

Bestimmung der Iteratorkategorie

iterator_category ist genau dann definiert, wenn all-forward  < Const, Views... > modelliert wird. In diesem Fall ist es wie folgt definiert:

Datenmember

Member Beschreibung
maybe-const <Const, ranges::concat_view>* parent_ ein Zeiger auf das Elternobjekt concat_view
(exposition-only member object*)
base-iter it_ ein Iterator in die aktuelle Ansicht
(exposition-only member object*)

Memberfunktionen

Konstruiert einen Iterator
(öffentliche Elementfunktion)
greift auf das Element zu
(öffentliche Elementfunktion)
greift auf ein Element per Index zu
(öffentliche Elementfunktion)
bewegt den zugrundeliegenden Iterator vorwärts oder rückwärts
(öffentliche Elementfunktion)
Nur zur Darstellung dienende Funktionsvorlagen
ersetzt it_ durch den Anfang der nächsten View, falls it_ das Ende der aktuellen View ist
( nur zur Darstellung dienende Elementfunktion* )
dekrementiert it_ so, dass es auf die vorherige Position zeigt
( nur zur Darstellung dienende Elementfunktion* )
bewegt die aktuelle Position um den gegebenen Offset vorwärts
( nur zur Darstellung dienende Elementfunktion* )
dekrementiert die aktuelle Position um den gegebenen Wert
( nur zur Darstellung dienende Elementfunktion* )

Nicht-Member-Funktionen

vergleicht die zugrundeliegenden Iteratoren
(Funktion)
führt Iterator-Arithmetik durch
(Funktion)
(C++26)
konvertiert das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen Rvalue-Referenztyp
(Funktion)
(C++26)
vertauscht die von zwei zugrundeliegenden Iteratoren referenzierten Objekte
(Funktion)

Beispiel

Die vorläufige Version kann auf Compiler Explorer eingesehen werden.

#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    namespace views = std::views;
    static constexpr int p[]{1, 2, 3};
    static constexpr auto e = {4, 5};
    auto t = views::iota(6, 9);
    auto cat = views::concat(p, e, t);
    auto dog = views::concat(cat, cat);
    for (auto i{dog.begin()}; i != std::default_sentinel; ++i)
        std::cout << *i << ' ';
    std::cout << '\n';
}

Ausgabe:

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Referenzen

  • C++26-Standard (ISO/IEC 14882:2026):
  • 26.7.18.3 Klassentemplate concat_view::iterator [range.concat.iterator]