std::ranges::views::as_input, std::ranges::as_input_view
De es.cppreference.net
| 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 sontrue:Tinput_range,Tno satisface common_range, yTno satisface forward_range.
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
| Esta sección está incompleta Razón: sin ejemplo |
Véase también
(C++20) |
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) |