Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | ranges‎ | concat view
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
template< bool Const >
class /*iterator*/
(1) (nur Exposition*)
Hilfskonzepte
template< bool Const, class... Rs >
concept /*concat-is-random-access*/ = /* siehe Beschreibung */;
(2) (nur Exposition*)
template< bool Const, class... Rs >
concept /*concat-is-bidirectional*/ = /* siehe Beschreibung */;
(3) (nur Exposition*)
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 die Packung, die aus allen Elementen von Rs außer dem letzten Element 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 die Packung, die aus allen Elementen von Rs außer dem letzten Element 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>> && ...);

.

Inhalt

[edit] Template-Parameter

Const - ob der Iterator ein konstanter Iterator ist

[edit] Verschachtelte Typen

Nur-Exposition-Typen
Typ Definition
base-iter std::variant<ranges::iterator_t<maybe-const <Const, Views>>...>
((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 concat-value-t <maybe-const <Const, Views>...>
difference_type

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

[edit] Bestimmung des Iterator-Konzepts

iterator_concept ist wie folgt definiert

[edit] Bestimmung der Iterator-Kategorie

iterator_category ist definiert, wenn und nur wenn all-forward <Const, Views...> modelliert wird. In diesem Fall ist sie wie folgt definiert:

[edit] Datenmember

Mitglied Definition
maybe-const <Const, ranges::concat_view>* parent_ ein Zeiger auf die übergeordnete concat_view
((exposition-only member object*)
base-iter it_ ein Iterator in der aktuellen Ansicht
((exposition-only member object*)

[edit] Member-Funktionen

Konstruiert einen Iterator
(öffentliche Memberfunktion)
greift auf das Element zu
(öffentliche Memberfunktion)
greift per Index auf ein Element zu
(öffentliche Memberfunktion)
bewegt den zugrundeliegenden Iterator vorwärts oder rückwärts
(public member function) [edit]
Exposition-only-Funktionale Templates
ersetzt it_ durch den Anfang der nächsten Ansicht, wenn it_ das Ende der aktuellen Ansicht ist
(exposition-only Member-Funktion*)
dekrementiert it_, sodass er auf die vorherige Position zeigt
(exposition-only Member-Funktion*)
schiebt die aktuelle Position um den gegebenen Offset vorwärts
(exposition-only Member-Funktion*)
dekrementiert die aktuelle Position um den gegebenen Wert
(exposition-only Member-Funktion*)

[edit] Nicht-Member-Funktionen

vergleicht die zugrundeliegenden Iteratoren
(Funktion)
führt Iterator-Arithmetik durch
(Funktion)
(C++26)
castet das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen rvalue-Referenztyp
(Funktion)
(C++26)
tauscht die Objekte, auf die zwei zugrundeliegende Iteratoren zeigen
(Funktion)

[edit] 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

[edit] Referenzen

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