std::ranges::concat_view<Views...>:: iterator
|
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* ) |
iterator
ist der Typ der Iteratoren, die von
begin()
und
end()
von
ranges::
concat_view
<
Views...
>
zurückgegeben werden.
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
>>
&&
...
)
;
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
<
|
Bestimmung des Iterator-Konzepts
iterator_concept
ist wie folgt definiert:
-
Falls
concat-is-random-access < Const, Views... > modelliert wird, bezeichnetiterator_conceptstd::random_access_iterator_tag . -
Andernfalls, falls
concat-is-bidirectional < Const, Views... > modelliert wird, bezeichnetiterator_conceptstd::bidirectional_iterator_tag . -
Andernfalls, falls
all-forward < Const, Views... > modelliert wird, bezeichnetiterator_conceptstd::forward_iterator_tag . -
Andernfalls bezeichnet
iterator_conceptstd::input_iterator_tag .
Bestimmung der Iteratorkategorie
iterator_category
ist genau dann definiert, wenn
all-forward
<
Const, Views...
>
modelliert wird. In diesem Fall ist es wie folgt definiert:
-
Falls
std::
is_reference_v
<
concat-reference-t <maybe-const < Const, Views > ... >> false ist, bezeichnetiterator_categorystd::input_iterator_tag . -
Andernfalls sei
Csdas Paket der Typen std:: iterator_traits < ranges:: iterator_t <maybe-const < Const, Views >>> :: iterator_category ... :-
Falls
(
std::
derived_from
<
Cs,
std::
random_access_iterator_tag
>
&&
...
)
&&
concat-is-random-access < Const, Views... > true ist, bezeichnetiterator_categorystd::random_access_iterator_tag . -
Andernfalls falls
(
std::
derived_from
<
Cs,
std::
bidirectional_iterator_tag
>
&&
...
)
&&
concat-is-bidirectional < Const, Views... > true ist, bezeichnetiterator_categorystd::bidirectional_iterator_tag . -
Andernfalls falls
(
std::
derived_from
<
Cs,
std::
forward_iterator_tag
>
&&
...
)
true
ist,
bezeichnet
iterator_categorystd::forward_iterator_tag . -
Andernfalls bezeichnet
iterator_categorystd::input_iterator_tag .
-
Falls
(
std::
derived_from
<
Cs,
std::
random_access_iterator_tag
>
&&
...
)
&&
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) |
|
|
(C++26)
|
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]
-
26.7.18.3 Klassentemplate