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 | Sì |
Intervallo preso in prestito | Solo se l'intervallo sottostante soddisfa borrowed_range |
Membri
Funzioni membro | Descrizione |
---|---|
Costruttori C++20 | Creare un oggetto reverse_view . |
base C++20 |
Ottenere l'intervallo sottostante. |
begin C++20 |
Ottenere un iteratore al primo elemento. |
end C++20 |
Ottenere il sentinel alla fine dell'oggetto reverse_view . |
size C++20 |
Ottiene il numero di elementi. |
Ereditato da view_interface |
Descrizione |
back C++20 |
Ottiene l'ultimo elemento. |
empty C++20 |
Verificare se l'oggetto reverse_view è vuoto. |
front C++20 |
Ottenere il primo elemento. |
operator[] C++20 |
Ottiene l'elemento nella posizione specificata. |
operator bool C++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
.
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
.
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_range
o in altre parole, delimitato.
Vedi anche
<ranges>
reverse
adattatore di intervallo
Visualizzare le classi