common_view
(Clase, Biblioteca estándar de C++)
Tome un intervalo que pueda tener diferentes tipos de iterador y centinela y cree una vista que tenga el mismo iterador y tipo centinela. Esto resulta útil para llamar a algoritmos STL que aceptan intervalos especificados por pares de iteradores.
Sintaxis
template<ranges::view V>
requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;
Parámetros de plantilla
V
Tipo de la vista subyacente.
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::common |
Intervalo subyacente | Debe satisfacer forward_range o superior |
Tipo de elemento | Igual que el intervalo subyacente |
Ver categoría de iterador | forward_range o random_access_range cuando el intervalo subyacente satisface random_access_range y sized_range |
Tamaño | Solo si el intervalo subyacente cumple sized_range |
Es const -iterable |
Solo si el intervalo subyacente es 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 common_view . |
base C++20 |
Obtenga la vista subyacente. |
begin C++20 |
Obtenga un iterador al primer elemento de la vista. |
end C++20 |
Obtenga el sentinel al final de la vista. |
size C++20 |
Obtiene el número de elementos de la vista. |
Heredado de view_interface |
Descripción |
back C++20 |
Obtenga el último elemento. |
data C++20 |
Obtiene un puntero al primer elemento. |
empty C++20 |
Compruebe si la vista está vacía. |
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 la vista no está vacía. |
Comentarios
La mejor manera de crear un common_view
es usar el adaptador de views::common
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.
Esta vista es útil para pasar un intervalo que tiene diferentes tipos de iterador o centinela a un algoritmo heredado que espera que sean los mismos.
Requisitos
Encabezado: <ranges>
(desde C++20)
Espacio de nombres: std::ranges
Opción del compilador: /std:c++20
o posterior es necesaria.
Constructores
Cree una instancia de common_view
.
1) common_view() = default;
2) constexpr explicit common_view(V v);
Parámetros
v
Vista subyacente.
Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.
Comentarios
1) El valor predeterminado construye .common_view
2) Construye a common_view
partir de la vista subyacente mediante std::move(v)
. Se producirá un error si V
es un intervalo común para evitar el uso indebido que afectaría negativamente al rendimiento.
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() &&;
begin
Obtenga un iterador al primer elemento.
constexpr auto begin();
constexpr auto begin() const requires range<const V>;
Valor devuelto
Iterador que apunta al primer elemento de la vista:
end
Obtenga el sentinel al final de la vista.
constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;
Valor devuelto
Sentinel que sigue al último elemento de la vista:
size
Obtiene el número de elementos de la vista.
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 de la vista.