Namespaces
Variants

C++ named requirements: ReversibleContainer

From cppreference.net
C++ named requirements

Un ReversibleContainer est un Container qui possède des itérateurs satisfaisant aux exigences de LegacyBidirectionalIterator ou de LegacyRandomAccessIterator . De tels itérateurs permettent à un ReversibleContainer d'être parcouru en sens inverse.

Table des matières

Exigences

Un type satisfait ReversibleContainer s'il satisfait Container , que son type d'itérateur appartient aux catégories d'itérateurs bidirectionnels ou à accès aléatoire iterator categories et, étant donnés les types et valeurs suivants, les exigences sémantiques et de complexité dans les tableaux ci-dessous sont satisfaites :

Type Définition
X un type ReversibleContainer
T le value_type de X
Valeur Définition
a une valeur de type X

Types

Nom Type Exigences
typename X :: reverse_iterator std:: reverse_iterator < X :: iterator > un type d'itérateur dont le type de valeur est T
typename X :: const_reverse_iterator std:: reverse_iterator < X :: const_iterator > un type d'itérateur constant dont le type de valeur est T

Expressions

Les types reverse_iterator et const_reverse_iterator dans le tableau suivant désignent respectivement typename X :: reverse_iterator et typename X :: const_reverse_iterator .

Expression Type Sémantique Complexité
a. rbegin ( ) reverse_iterator
const_reverse_iterator pour constante a
reverse_iterator ( a. end ( ) ) Constante
a. rend ( ) reverse_iterator
const_reverse_iterator pour constante a
reverse_iterator ( a. begin ( ) ) Constante
a. crbegin ( ) const_reverse_iterator const_cast < const X & > ( a ) . rbegin ( ) Constante
a. crend ( ) const_reverse_iterator const_cast < const X & > ( a ) . rend ( ) Constante

Types de bibliothèque

Les types suivants de la bibliothèque standard satisfont les exigences ReversibleContainer :

(C++11)
tableau contigu fixe en place
(modèle de classe)
file double face
(modèle de classe)
liste doublement chaînée
(modèle de classe)
tableau contigu redimensionnable
(modèle de classe)
tableau contigu en place redimensionnable à capacité fixe
(modèle de classe)
collection de paires clé-valeur, triées par clés, clés uniques
(modèle de classe)
collection de paires clé-valeur, triées par clés
(modèle de classe)
collection de clés uniques, triées par clés
(modèle de classe)
collection de clés, triées par clés
(modèle de classe)

Exemple

L'exemple suivant itère sur un vector (qui possède des itérateurs à accès aléatoire legacy ) en sens inverse.

#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';
}

Sortie :

9 5 1 4 1 3

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2105 C++98 typename X :: const_reverse_iterator était
requis d'être un type d'itérateur de type valeur const T
requis d'être un type
d'itérateur constant de type valeur T