Compartir a través de


ref_view (Clase, Biblioteca estándar de C++)

Vista que hace referencia a los elementos que pertenecen a otro intervalo.

Sintaxis

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

Parámetros de plantilla

R
Intervalo al que se va a hacer referencia.

Miembros

Funciones miembro Descripción
ConstructoresC++20 Construya un elemento ref_view.
baseC++20 Obtenga una referencia al intervalo subyacente.
beginC++20 Obtenga un iterador al primer elemento.
dataC++20 Obtenga un puntero al primer elemento del intervalo al que se hace referencia.
emptyC++20 Compruebe si está ref_view vacío.
endC++20 Obtenga el centinela al final de este ref_view.
sizeC++20 Obtiene el número de elementos. El intervalo subyacente debe satisfacer sized_range.
Heredado de view_interface Descripción
backC++20 Obtenga el último elemento.
frontC++20 Obtiene el primer elemento.
operator[]C++20 Obtiene el elemento que se encuentra en la posición especificada.
operator boolC++20 Compruebe si ref_view esto no está vacío.

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::all o views::common
Intervalo subyacente Debe satisfacer input_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
Rango común Solo si el intervalo subyacente cumple common_range
Intervalo prestado

Requisitos

Encabezado: <ranges> (desde C++20)

Espacio de nombres: std::ranges

Opción del compilador: /std:c++20 o posterior es necesaria.

Constructores

Construcción de una instancia de ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

Parámetros

rg
Intervalo al que se va a hacer referencia.

Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.

Valor devuelto

Instancia de ref_view.

Comentarios

La mejor manera de crear un ref_view es usar el adaptador de views::all 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.

Es ref_view útil para convertir un contenedor en una vista. Por ejemplo, puede usar ref_view para convertir un vector objeto en una vista, lo que hace que sea económico pasar los elementos del vector alrededor.

Ejemplo: ref_view

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

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

Obtiene una copia del intervalo subyacente.

constexpr R& base() const;

Parámetros

Ninguno.

Valor devuelto

Intervalo subyacente.

begin

Obtenga un iterador al primer elemento de .ref_view

constexpr iterator_t<R> begin() const;

Parámetros

Ninguno.

Valor devuelto

Iterador que apunta al primer elemento de este ref_view.

Imagen de un vector con los elementos 10, 20 y 30. El primer elemento contiene 10 y se etiqueta begin(). El último elemento contiene 30 y se etiqueta como

data

Obtenga un puntero al primer elemento de este ref_view. Los elementos del intervalo deben ser contiguos.

constexpr auto data() const requires contiguous_range<R>;

Parámetros

Ninguno.

Valor devuelto

Puntero al primer elemento.

empty

Compruebe si está ref_view vacío.

constexpr bool empty() const

Parámetros

Ninguno.

Valor devuelto

Devuelve true si no ref_view contiene elementos. En caso contrario, es false.

end

Obtenga el centinela al final de este ref_view.

constexpr sentinel_t<R> end() const

Valor devuelto

El centinela que sigue al último elemento de este ref_view:

Imagen de un vector con los elementos 10, 20 y 30. El primer elemento contiene 10 y se etiqueta begin(). El último elemento contiene 30 y se etiqueta como

size

Obtiene el número de elementos.

constexpr auto size() const requires sized_range<R>

Parámetros

Ninguno.

Valor devuelto

Número de elementos incluidos en ref_view.

Consulte también

<ranges>
all adaptador de rango
ver clases