C++ named requirements: ReversibleContainer
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) |
|
|
(C++26)
|
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
|