Namespaces
Variants

C++ named requirements: ReversibleContainer

From cppreference.net
C++ named requirements

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)
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