C++ named requirements: ReversibleContainer
Ein ReversibleContainer ist ein Container , der Iteratoren besitzt, die den Anforderungen von entweder LegacyBidirectionalIterator oder LegacyRandomAccessIterator entsprechen. Solche Iteratoren ermöglichen es, einen ReversibleContainer in umgekehrter Reihenfolge zu durchlaufen.
Inhaltsverzeichnis |
Anforderungen
Ein Typ erfüllt ReversibleContainer , wenn er Container erfüllt, sein Iteratortyp zu den bidirektionalen oder wahlfreien Iteratorkategorien gehört und, bei den folgenden Typen und Werten, die semantischen und Komplexitätsanforderungen in den folgenden Tabellen erfüllt sind:
| Typ | Definition |
X
|
ein ReversibleContainer Typ |
T
|
der
value_type
von
X
|
| Wert | Definition |
| a |
ein Wert vom Typ
X
|
Typen
| Name | Typ | Anforderungen |
|---|---|---|
| typename X :: reverse_iterator | std:: reverse_iterator < X :: iterator > |
ein Iteratortyp, dessen
Werttyp
T
ist
|
| typename X :: const_reverse_iterator | std:: reverse_iterator < X :: const_iterator > |
ein konstanter Iteratortyp, dessen
Werttyp
T
ist
|
Ausdrücke
Die Typen
reverse_iterator
und
const_reverse_iterator
in der folgenden Tabelle bezeichnen
typename
X
::
reverse_iterator
beziehungsweise
typename
X
::
const_reverse_iterator
.
| Ausdruck | Typ | Semantik | Komplexität |
|---|---|---|---|
| a. rbegin ( ) |
reverse_iterator
const_reverse_iterator
für konstantes
a
|
reverse_iterator ( a. end ( ) ) | Konstant |
| a. rend ( ) |
reverse_iterator
const_reverse_iterator
für konstantes
a
|
reverse_iterator ( a. begin ( ) ) | Konstant |
| a. crbegin ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rbegin ( ) | Konstant |
| a. crend ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rend ( ) | Konstant |
Bibliothekstypen
Die folgenden Standardbibliothekstypen erfüllen ReversibleContainer -Anforderungen:
|
(C++11)
|
Festgroße In-Place-kontinuierliche Anordnung
(Klassentemplate) |
|
Doppelendige Warteschlange
(Klassentemplate) |
|
|
Doppelt verkettete Liste
(Klassentemplate) |
|
|
Größenveränderbare kontinuierliche Anordnung
(Klassentemplate) |
|
|
(C++26)
|
Größenveränderbare, festkapazitive In-Place-kontinuierliche Anordnung
(Klassentemplate) |
|
Sammlung von Schlüssel-Wert-Paaren, nach Schlüsseln sortiert, Schlüssel eindeutig
(Klassentemplate) |
|
|
Sammlung von Schlüssel-Wert-Paaren, nach Schlüsseln sortiert
(Klassentemplate) |
|
|
Sammlung eindeutiger Schlüssel, nach Schlüsseln sortiert
(Klassentemplate) |
|
|
Sammlung von Schlüsseln, nach Schlüsseln sortiert
(Klassentemplate) |
Beispiel
Das folgende Beispiel iteriert rückwärts über einen vector (welcher Legacy-Random-Access-Iteratoren besitzt).
#include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4, 1, 5, 9}; for (std::vector<int>::const_reverse_iterator i{v.crbegin()}; i != v.crend(); ++i) std::cout << *i << ' '; std::cout << '\n'; }
Ausgabe:
9 5 1 4 1 3
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2105 | C++98 |
typename
X
::
const_reverse_iterator
war
erforderlich, ein Iteratortyp des Werttyps const T zu sein |
erforderlich, ein konstanter
Iteratortyp des Werttyps
T
zu sein
|