Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
template < bool Const >
class /*iterator*/
(1) ( Nur zur Darstellung* )
Hilfskonzepte
template < bool Const, class ... Rs >
concept /*concat-is-random-access*/ = /* siehe Beschreibung */ ;
(2) ( Nur zur Darstellung* )
template < bool Const, class ... Rs >
concept /*concat-is-bidirectional*/ = /* siehe Beschreibung */ ;
(3) ( Nur zur Darstellung* )
1) ranges:: concat_view < Views... > :: iterator ist der Typ der Iteratoren, die von begin() und end() von ranges:: concat_view < Views... > zurückgegeben werden.
2) Sei Fs das Paket, das aus allen Elementen von Rs besteht, außer dem letzten Element. Entspricht

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

.
3) Sei Fs das Paket, das aus allen Elementen von Rs besteht, außer dem letzten Element. Entspricht

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

.

Inhaltsverzeichnis

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:

Datenmitglieder

Member Definition
maybe-const  < Const, ranges:: concat_view > * parent_ ein Zeiger auf das übergeordnete concat_view
( Nur-Darstellungs-Memberobjekt* )
base-iter it_ ein Iterator in die aktuelle Ansicht
( Nur-Darstellungs-Memberobjekt* )

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]