Condividi tramite


reverse_view classe (libreria standard C++)

Visualizzazione degli elementi di un intervallo in ordine inverso.

Sintassi

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

Parametri del modello

V
Tipo della vista sottostante.
Questo tipo deve soddisfare ranges::bidirectional_range.

Visualizzare le caratteristiche

Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe

Caratteristica Descrizione
Adattatore di intervallo views::reverse
Intervallo sottostante Deve soddisfare bidirectional_range fino a random_access_range
Tipo di elemento Uguale all'intervallo sottostante
Visualizzare la categoria iteratore Uguale all'intervallo sottostante
Dimensioni Solo se l'intervallo sottostante soddisfa sized_range
Iterabile const Solo se l'intervallo sottostante è e common_view soddisfa const-iterable
Intervallo comune
Intervallo preso in prestito Solo se l'intervallo sottostante soddisfa borrowed_range

Membri

Funzioni membro Descrizione
Costruttori C++20 Creare un oggetto reverse_view.
baseC++20 Ottenere l'intervallo sottostante.
beginC++20 Ottenere un iteratore al primo elemento.
endC++20 Ottenere il sentinel alla fine dell'oggetto reverse_view.
sizeC++20 Ottiene il numero di elementi.
Ereditato da view_interface Descrizione
backC++20 Ottiene l'ultimo elemento.
emptyC++20 Verificare se l'oggetto reverse_view è vuoto.
frontC++20 Ottenere il primo elemento.
operator[]C++20 Ottiene l'elemento nella posizione specificata.
operator boolC++20 Verificare se l'oggetto reverse_view non è vuoto.

Requisiti

Intestazione: <ranges> (da C++20)

Spazio dei nomi: std::ranges

Opzione del compilatore: /std:c++20 o versione successiva è obbligatoria.

Costruttori

Costruire un'istanza di da reverse_view una vista bidirezionale.

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)

Parametri

rg
Visualizzazione di cui fornire una visualizzazione inversa.

Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.

Valore restituito

Visualizzazione dell'intervallo sottostante, in ordine inverso.

Osservazioni:

Il modo migliore per creare un reverse_view oggetto consiste nell'usare l'adattatore views::reverse di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.

1) Il costruttore predefinito inizializza un oggetto reverse_view.
2) Creare un oggetto reverse_view dalla vista specificata.

Esempio: 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

Ottiene una copia della visualizzazione sottostante.

// 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() &&;

Parametri

Nessuna.

Valore restituito

Visualizzazione sottostante.

begin

Ottenere un iteratore al primo elemento dell'oggetto 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>;

Parametri

Nessuna.

Valore restituito

Iteratore che punta al primo elemento dell'oggetto reverse_view.

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

Osservazioni:

Dopo la prima chiamata a begin(), le chiamate successive vengono eseguite in tempo costante, O(1), indipendentemente dal numero di elementi presenti in reverse_view. Ciò ha implicazioni perché reverse_view memorizza nella cache il valore di last in modo che possa restituirlo ripetutamente da begin. Ciò significa che non è consigliabile riutilizzare una visualizzazione dopo la modifica del contenitore sottostante. Se l'intervallo sottostante viene modificato, generare una nuova visualizzazione, che è economica.

2) La vista sottostante deve soddisfare common_range, il che significa che la vista sottostante deve avere lo stesso tipo di iteratore iniziale e finale.
3) La vista sottostante deve soddisfare common_range per una visualizzazione const per scorrere un oggetto const reverse_view.

end

Ottenere la sentinella alla fine del reverse_view

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

Parametri

Nessuna.

Valore restituito

Sentinel che segue l'ultimo elemento nell'oggetto reverse_view.

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

Osservazioni:

Per 2, la vista sottostante deve soddisfare common_range per una visualizzazione const, il che significa che la vista sottostante deve avere lo stesso tipo di iteratore iniziale e finale.

size

Ottiene il numero di elementi.

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

Parametri

Nessuna.

Valore restituito

Numero di elementi in reverse_view.

Osservazioni:

Le dimensioni della vista sono disponibili solo se l'intervallo sottostante è , sized_rangeo in altre parole, delimitato.

Vedi anche

<ranges>
reverse adattatore di intervallo
Visualizzare le classi