Namespaces
Variants

std::ranges::views::as_input, std::ranges::as_input_view

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
Definido en el encabezado <ranges>
template< ranges::input_range V >
    requires ranges::view<V>
class as_input_view
    : public ranges::view_interface<as_input_view<V>>
(1) (desde C++26)
namespace views {
    inline constexpr /* unspecified */ as_input = /* unspecified */;
}
(2) (desde C++26)
Firma de llamada
template< ranges::viewable_range R >
    requires /* see below */
constexpr ranges::view auto as_input( R&& r );
(desde C++26)
1) Un adaptador de rango que representa una vista de una view subyacente como un input_range-only y no un common_range.
2) RangeAdaptorObject. Sea e una subexpresión, y sea T decltype(e). Entonces la expresión views::as_input(e) es equivalente a expresión a:
  • views::all(e), si es una expresión bien formada y todas las condiciones siguientes son true:
  • as_input_view{e} en caso contrario.

En consecuencia, as_input_view nunca modela conceptos de rango más fuertes que input_range. En particular, no modela todos estos:

Además, as_input_view no modela common_range. Sin embargo, modela borrowed_range, constant_range, y sized_range cuando la vista subyacente V modela los conceptos respectivos.

Miembros de datos

Miembro Descripción
V base_ (privado) la vista subyacente
(objeto miembro solo de exposición*)

Funciones miembro

construye un as_input_view
(función miembro pública)
devuelve una copia de la vista subyacente (adaptada)
(función miembro pública)
devuelve un iterador al inicio
(función miembro pública)
devuelve un iterador o un centinela al final
(función miembro pública)
devuelve el número de elementos. Se proporciona solo si el rango subyacente (adaptado) satisface sized_range.
(función miembro pública)
Heredado de ranges::view_interface
devuelve si la vista derivada está vacía, se proporciona solo si satisface sized_range o forward_range
(función miembro pública de std::ranges::view_interface<D>)
(C++23)
devuelve un iterador constante al inicio del rango
(función miembro pública de std::ranges::view_interface<D>)
(C++23)
devuelve un centinela para el iterador constante del rango
(función miembro pública de std::ranges::view_interface<D>)
devuelve si la vista derivada no está vacía, se proporciona solo si ranges::empty es aplicable a ella
(función miembro pública de std::ranges::view_interface<D>)
obtiene la dirección de los datos de la vista derivada, se proporciona solo si su tipo iterador satisface contiguous_iterator
(función miembro pública de std::ranges::view_interface<D>)
devuelve el primer elemento en la vista derivada, se proporciona si satisface forward_range
(función miembro pública de std::ranges::view_interface<D>)
devuelve el último elemento en la vista derivada, se proporciona solo si satisface bidirectional_range y common_range
(función miembro pública de std::ranges::view_interface<D>)
devuelve el n-ésimo elemento en la vista derivada, se proporciona solo si satisface random_access_range
(función miembro pública de std::ranges::view_interface<D>)

std::ranges::as_input_view::as_input_view

as_input_view() requires std::default_initializable<V> = default;
(1) (desde C++26)
constexpr explicit as_input_view( V base );
(2) (desde C++26)
1) Inicializa por valor base_ mediante su inicializador miembro por defecto (= V()).
2) Inicializa base_ con std::move(base).

Parámetros

base - una vista

std::ranges::as_input_view::base

constexpr V base() const& requires std::copy_constructible<V>;
(1) (desde C++26)
constexpr V base() &&;
(2) (desde C++26)
1) Construye por copia el resultado de la vista subyacente. Equivalente a return base_;.
2) Construye por movimiento el resultado de la vista subyacente. Equivalente a return std::move(base_);.

std::ranges::as_input_view::begin

constexpr auto begin() requires (!__simple_view<V>);
(1) (desde C++26)
constexpr auto begin() const requires ranges::range<const V>;
(2) (desde C++26)
1) Equivalente a return /*iterator*/<false>(ranges::begin(base_));
2) Equivalente a return /*iterator*/<true>(ranges::begin(base_));

std::ranges::as_input_view::end

constexpr auto end() requires (!__simple_view<V>);
(1) (desde C++26)
constexpr auto end() const requires ranges::range<const V>;
(2) (desde C++26)
1,2) Equivalente a return ranges::end(base_);

std::ranges::as_input_view::size

constexpr auto size() requires ranges::sized_range<V>;
(1) (desde C++26)
constexpr auto size() const requires ranges::sized_range<const V>;
(2) (desde C++26)
1,2) Equivalente a return ranges::size(base_);

Guías de deducción

template< class R >
as_input_view( R&& ) -> as_input_view<views::all_t<R>>;
(desde C++26)

Clases anidadas

el tipo iterador
(plantilla de clase miembro solo de exposición*)

Plantillas auxiliares

template< class T >
constexpr bool enable_borrowed_range<std::ranges::as_input_view<T>> =
    ranges::enable_borrowed_range<T>;
(desde C++26)

Esta especialización de std::ranges::enable_borrowed_range hace que as_input_view satisfaga borrowed_range cuando la vista subyacente lo satisface.

Notas

as_input_view puede ser útil para evitar la sobrecarga necesaria para proporcionar soporte para las operaciones requeridas para una mayor potencia de iterador.

Macro de prueba de característica Valor Std Característica
__cpp_lib_ranges_as_input 202502L (C++26) std::ranges::as_input_view

Ejemplo

Véase también

especifica un rango cuyo tipo iterador satisface input_iterator
(concepto)
convierte una view en un common_range
(plantilla de clase) (objeto de adaptador de rango)