Partager via


reverse_view classe (bibliothèque standard C++)

Vue des éléments d’une plage dans l’ordre inverse.

Syntaxe

template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;

Paramètres de modèle

V
Type de la vue sous-jacente.
Ce type doit satisfaire ranges::bidirectional_range.

Afficher les caractéristiques

Pour obtenir une description des entrées suivantes, consultez les caractéristiques de classe View

Caractéristique Description
Adaptateur de plage views::reverse
Plage sous-jacente Doit satisfaire bidirectional_range jusqu’à random_access_range
Type d’élément Identique à la plage sous-jacente
Afficher la catégorie d’itérateur Identique à la plage sous-jacente
Taille Uniquement si la plage sous-jacente satisfait sized_range
Est const-itérable Uniquement si la plage sous-jacente est un common_view et satisfait const-iterable
Plage commune Oui
Plage empruntée Uniquement si la plage sous-jacente satisfait borrowed_range

Membres

Fonctions membres Description
Constructeurs C++20 Construisez un reverse_view.
baseC++20 Obtenez la plage sous-jacente.
beginC++20 Obtenez un itérateur au premier élément.
endC++20 Obtenez la sentinelle à la fin du reverse_view.
sizeC++20 Obtenez le nombre d’éléments.
Hérité de view_interface Description
backC++20 Obtenez le dernier élément.
emptyC++20 Testez si la valeur reverse_view est vide.
frontC++20 Obtenez le premier élément.
operator[]C++20 Obtenez l’élément à la position spécifiée.
operator boolC++20 Testez si la valeur reverse_view n’est pas vide.

Spécifications

En-tête : <ranges> (depuis C++20)

Espace de noms : std::ranges

Option du compilateur : /std:c++20 ou version ultérieure est requise.

Constructeurs

Construisez une instance d’une reverse_view vue bidirectionnelle.

1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)

Paramètres

rg
Vue pour fournir une vue inversée de.

Pour plus d’informations sur le type de paramètre de modèle, consultez Paramètres de modèle.

Valeur retournée

Vue de la plage sous-jacente, dans l’ordre inverse.

Notes

La meilleure façon de créer un reverse_view est d’utiliser l’adaptateur views::reverse de plage. Les adaptateurs de plage sont la méthode prévue pour créer des classes d’affichage. Les types d’affichage sont exposés au cas où vous souhaitez créer votre propre type d’affichage personnalisé.

1) Le constructeur par défaut initialise par défaut un reverse_view.
2) Créez un reverse_view à partir de la vue spécifiée.

Exemple : reverse_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
    auto rv = v | std::views::reverse;
    
    for (auto e : rv) // 6 5 -4 3 2 1 0
    {
        std::cout << e << ' ';
    }
}
6 5 -4 3 2 1 0

base

Obtient une copie de la vue sous-jacente.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

Paramètres

Aucune.

Valeur retournée

Vue sous-jacente.

begin

Obtenez un itérateur au premier élément du reverse_view.

1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;

Paramètres

Aucune.

Valeur retournée

Itérateur pointant vers le premier élément du reverse_view.

Image d’un vecteur avec les éléments 10, 20 et 30. Le premier élément contient 10 et est étiqueté begin(). Le dernier élément contient 30 et est intitulé « dernier élément ». Une zone imaginaire après le dernier élément indique la sentinelle et est étiquetée end().

Notes

Après le premier appel à begin(), les appels suivants s’exécutent en temps constant, O(1), quel que soit le nombre d’éléments dans le reverse_view. Cela a des implications, car reverse_view met en cache la valeur de last sorte qu’elle puisse la retourner à plusieurs reprises à partir de begin. Cela signifie que vous ne devez pas réutiliser une vue après la modification du conteneur sous-jacent. Si la plage sous-jacente est modifiée, générez une nouvelle vue, ce qui est peu coûteux.

2) La vue sous-jacente doit satisfaire common_range, ce qui signifie que la vue sous-jacente doit avoir le même type d’itérateur de début et de fin.
3) La vue sous-jacente doit satisfaire common_range à une vue const pour itérer sur un const reverse_view.

end

Obtenir la sentinelle à la fin de la reverse_view

1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;

Paramètres

Aucune.

Valeur retournée

Sentinel qui suit le dernier élément dans le reverse_view.

Image d’un vecteur avec les éléments 10, 20 et 30. Le premier élément contient 10 et est étiqueté begin(). Le dernier élément contient 30 et est intitulé « dernier élément ». Une zone imaginaire après le dernier élément indique la sentinelle et est étiquetée end().

Notes

Pour 2, la vue sous-jacente doit être satisfaite common_range pour une vue const, ce qui signifie que la vue sous-jacente doit avoir le même type d’itérateur de début et de fin.

size

Obtenez le nombre d’éléments.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Paramètres

Aucune.

Valeur retournée

Nombre d'éléments dans reverse_view.

Notes

La taille de la vue est disponible uniquement si la plage sous-jacente est limitée sized_range, ou en d’autres termes.

Voir aussi

<ranges>
reverse adaptateur de plage
Afficher les classes