reverse_view
(Clase, Biblioteca estándar de C++)
Vista de los elementos de un intervalo en orden inverso.
Sintaxis
template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;
Parámetros de plantilla
V
Tipo de la vista subyacente.
Este tipo debe satisfacer ranges::bidirectional_range
.
Características de la vista
Para obtener una descripción de las siguientes entradas, vea View class characteristics (Ver características de clase).
Característica | Descripción |
---|---|
Adaptador de rango | views::reverse |
Intervalo subyacente | Debe satisfacer bidirectional_range hasta random_access_range |
Tipo de elemento | Igual que el intervalo subyacente |
Ver categoría de iterador | Igual que el intervalo subyacente |
Tamaño | Solo si el intervalo subyacente cumple sized_range |
Es const -iterable |
Solo si el intervalo subyacente es y common_view satisface const-iterable |
Rango común | Sí |
Intervalo prestado | Solo si el intervalo subyacente cumple borrowed_range |
Miembros
Funciones miembro | Descripción |
---|---|
ConstructoresC++20 | Construya un elemento reverse_view . |
base C++20 |
Obtenga el intervalo subyacente. |
begin C++20 |
Obtenga un iterador al primer elemento. |
end C++20 |
Obtenga el centinela al final de .reverse_view |
size C++20 |
Obtiene el número de elementos. |
Heredado de view_interface |
Descripción |
back C++20 |
Obtenga el último elemento. |
empty C++20 |
Comprueba si el objeto reverse_view está vacío. |
front C++20 |
Obtiene el primer elemento. |
operator[] C++20 |
Obtiene el elemento que se encuentra en la posición especificada. |
operator bool C++20 |
Compruebe si reverse_view no está vacío. |
Requisitos
Encabezado: <ranges>
(desde C++20)
Espacio de nombres: std::ranges
Opción del compilador: /std:c++20
o posterior es necesaria.
Constructores
Construya una instancia de a reverse_view
partir de una vista bidireccional.
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)
Parámetros
rg
Vista de la que se va a proporcionar una vista invertida.
Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.
Valor devuelto
Vista del intervalo subyacente, en orden inverso.
Comentarios
La mejor manera de crear un reverse_view
es usar el adaptador de views::reverse
rango. Los adaptadores de rango son la manera prevista de crear clases de vista. Los tipos de vista se exponen en caso de que desee crear su propio tipo de vista personalizado.
1) El constructor predeterminado inicializa un reverse_view
.
2) Cree un a reverse_view
partir de la vista especificada.
Ejemplo: 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
Obtiene una copia de la vista subyacente.
// 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() &&;
Parámetros
Ninguno.
Valor devuelto
Vista subyacente.
begin
Obtenga un iterador al primer elemento de .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>;
Parámetros
Ninguno.
Valor devuelto
Iterador que apunta al primer elemento de reverse_view
.
Comentarios
Después de la primera llamada a begin()
, las llamadas posteriores se ejecutan en tiempo constante, O(1), independientemente de cuántos elementos estén en .reverse_view
Esto tiene implicaciones porque reverse_view
almacena en caché el valor de last
para que pueda devolverlo repetidamente de begin
. Esto significa que no debe reutilizar una vista después de modificar el contenedor subyacente. Si se modifica el intervalo subyacente, genere una nueva vista, que es económica.
2) La vista subyacente debe satisfacer common_range
, lo que significa que la vista subyacente debe tener el mismo tipo de iterador inicial y final.
3) La vista subyacente debe satisfacer common_range
para una vista const para iterar sobre un const reverse_view
.
end
Obtención del centinela al final del reverse_view
1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;
Parámetros
Ninguno.
Valor devuelto
Sentinel que sigue al último elemento de .reverse_view
Comentarios
Para 2, la vista subyacente debe satisfacer common_range
para una vista const, lo que significa que la vista subyacente debe tener el mismo tipo de iterador inicial y final.
size
Obtiene el número de elementos.
constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;
Parámetros
Ninguno.
Valor devuelto
Número de elementos incluidos en reverse_view
.
Comentarios
El tamaño de la vista solo está disponible si el intervalo subyacente es , sized_range
o en otras palabras, limitado.