Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: ReversibleContainer

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Ein ReversibleContainer ist ein Container, der Iteratoren hat, welche die Anforderungen von entweder LegacyBidirectionalIterator oder LegacyRandomAccessIterator erfüllen. Solche Iteratoren erlauben es einem ReversibleContainer, rückwärts durchlaufen zu werden.

Inhalt

[bearbeiten] Anforderungen

Ein Typ erfüllt ReversibleContainer, wenn er Container erfüllt, sein Iteratortyp zu den bidirektionalen oder zufälligen Zugriffskategorien der Iteratoren gehört und unter Berücksichtigung der folgenden Typen und Werte die semantischen und Komplexitätsanforderungen in den nachstehenden Tabellen erfüllt werden.

Typ Definition
X ein ReversibleContainer-Typ
T der value_type von X
Wert Definition
a ein Wert vom Typ X

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

[bearbeiten] Ausdrücke

Die Typen reverse_iterator und const_reverse_iterator in der folgenden Tabelle bezeichnen typename X::reverse_iterator bzw. 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()) Konstante
a.rend() reverse_iterator
const_reverse_iterator für konstantes a
reverse_iterator(a.begin()) Konstante
a.crbegin() const_reverse_iterator const_cast<const X&>(a).rbegin() Konstante
a.crend() const_reverse_iterator const_cast<const X&>(a).rend() Konstante

[bearbeiten] Bibliothekstypen

Die folgenden Standardbibliothekstypen erfüllen die Anforderungen von ReversibleContainer.

(C++11)
fest dimensioniertes, inplace, zusammenhängendes Array
(Klassenvorlage) [edit]
Doppelt-endende Warteschlange
(Klassenvorlage) [edit]
Doppelt verkettete Liste
(Klassenvorlage) [edit]
reservierbares, zusammenhängendes Array
(Klassenvorlage) [edit]
reservierbares, festes Kapazitäts-Array, Inplace, zusammenhängend
(Klassenvorlage) [edit]
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassenvorlage) [edit]
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln
(Klassenvorlage) [edit]
Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln
(Klassenvorlage) [edit]
Sammlung von Schlüsseln, sortiert nach Schlüsseln
(Klassenvorlage) [edit]

[bearbeiten] Beispiel

Das folgende Beispiel iteriert rückwärts über einen vector (der Legacy-Zufallszugriffsiteratoren hat).

#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

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2105 C++98 typename X::const_reverse_iterator war
als ein Iteratortyp mit dem Werttyp const T erforderlich
als ein konstanter
Iteratortyp mit dem Werttyp T erforderlich