std:: common_iterator
|
Definiert im Header
<iterator>
|
||
|
template
<
std::
input_or_output_iterator
I,
std::
sentinel_for
<
I
>
S
>
erfordert
(
!
std::
same_as
<
I, S
>
&&
std::
copyable
<
I
>
)
|
(seit C++20) | |
std::common_iterator
ist ein Iterator-
I
/Sentinel-
S
-Adapter, der einen nicht-gemeinsamen Bereich (bei dem die Typen von
I
und
S
unterschiedlich sind) als einen
common_range
darstellen kann, indem er entweder einen Iterator oder einen Sentinel enthält und die entsprechenden Gleichheitsvergleichsoperatoren
operator
==
definiert.
std::common_iterator
kann als "Brücke" zwischen Sequenzen, die durch Iterator/Sentinel-Paare repräsentiert werden, und Legacy-Funktionen verwendet werden, die
common_range
-ähnliche Sequenzen erwarten.
Inhaltsverzeichnis |
Datenmitglieder
| Mitgliedername | Definition |
var
|
ein Objekt vom Typ
std::
variant
<
I, S
>
( Nur-Darstellungs-Mitgliedsobjekt* ) |
Memberfunktionen
konstruiert einen neuen
common_iterator
(öffentliche Elementfunktion) |
|
weist einen anderen
common_iterator
zu
(öffentliche Elementfunktion) |
|
|
greift auf das referenzierte Element zu
(öffentliche Elementfunktion) |
|
erhöht den
common_iterator
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
(C++20)
|
vergleicht die zugrundeliegenden Iteratoren oder Sentinel-Objekte
(Funktions-Template) |
|
(C++20)
|
berechnet die Distanz zwischen zwei Iterator-Adaptoren
(Funktions-Template) |
|
(C++20)
|
konvertiert das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen assoziierten Rvalue-Referenztyp
(Funktion) |
|
(C++20)
|
vertauscht die Objekte, auf die zwei zugrundeliegende Iteratoren zeigen
(Funktions-Template) |
Hilfsklassen
|
berechnet den assoziierten Differenztyp des
std::common_iterator
Typs
(Klassen-Template-Spezialisierung) |
|
|
bietet eine einheitliche Schnittstelle für die Eigenschaften des
std::common_iterator
Typs
(Klassen-Template-Spezialisierung) |
Beispiel
#include <algorithm> #include <iostream> #include <iterator> #include <list> #include <string> template<class ForwardIter> void fire(ForwardIter first, ForwardIter last) { std::copy(first, last, std::ostream_iterator<std::string>{std::cout, " "}); } int main() { std::list<std::string> stars{"Pollux", "Arcturus", "Mira", "Aldebaran", "Sun"}; using IT = std::common_iterator< std::counted_iterator<std::list<std::string>::iterator>, std::default_sentinel_t>; fire(IT(std::counted_iterator(stars.begin(), stars.size() - 1)), IT(std::default_sentinel)); }
Ausgabe:
Pollux Arcturus Mira Aldebaran
Referenzen
- C++23-Standard (ISO/IEC 14882:2024):
-
- 23.5.5 Gemeinsame Iteratoren [iterators.common]
- C++20-Standard (ISO/IEC 14882:2020):
-
- 23.5.4 Gemeinsame Iteratoren [iterators.common]
Siehe auch
|
(C++20)
|
spezifiziert, dass ein Range identische Iterator- und Sentinel-Typen besitzt
(Konzept) |
konvertiert eine
view
in einen
common_range
(Klassentemplate) (Range-Adapter-Objekt) |