Espacios de nombres
Variantes
Acciones

std::ranges::views::drop, std::ranges::drop_view

De cppreference.com
< cpp‎ | ranges
 
 
Biblioteca de rangos
Adaptadores de rangos
 
std::ranges::drop_view
 
Definido en el archivo de encabezado <ranges>
template<ranges::view V >
class drop_view :publicranges::view_interface<drop_view<V>>
(1) (desde C++20)
namespace views {

    inlineconstexpr/*no especificado*/ drop =/*no especificado*/;

}
(2) (desde C++20)
Signatura de la llamada
template<ranges::viewable_range R, class DifferenceType >

    requires /* véase a continuación */

constexprranges::viewauto drop( R&& r, DifferenceType&& count );
(desde C++20)
template<class DifferenceType >
constexpr/*cierre de adaptador de rango*/ drop( DifferenceType&& count );
(desde C++20)
1) Un adaptador de rango que consiste en elementos de la secuencia subyacente, omitiendo los primeros N elementos.
2)Objeto adaptador de rango. Dado que T es std::remove_cvref_t<decltype((e))> y D es ranges::range_difference_t<decltype((e))>), la expresión views::drop(e, f) es equivalente en expresión a:
  • std::span<typename T::element_type>, si T es una especialización de std::span;
  • T de lo contrario;
  • de lo contrario, drop_view(e, f).
En todos los casos, decltype((f)) debe modelar std::convertible_to<D>.

drop_view modela los conceptos contiguous_range, random_access_range, bidirectional_range, forward_range, input_range, common_range, y sized_range cuando la vista subyacente V modela los conceptos respectivos.

Contenido

[editar]Equivalente en expresión

La expresión e es equivalente-en-expresión a la expresión f, si e y f tienen los mismos efectos, ambas potencialmente lanzan o ambas potencialmente no lanzan (es decir, noexcept(e)==noexcept(f)), y ambas son subexpresiones constantes o ambas no son subexpresiones constantes.

[editar]Funciones miembro

Construye un objeto drop_view
(función miembro pública)[editar]
(C++20)
Devuelve una copia de la vista (adaptada) subyacente.
(función miembro pública)[editar]
(C++20)
Devuelve un iterador al comienzo.
(función miembro pública)[editar]
(C++20)
Devuelve un iterador o un centinela al final.
(función miembro pública)[editar]
(C++20)
Devuelve el número de elementos. Se proporciona solo si el rango (adaptado) subyacente satisface sized_range .
(función miembro pública)[editar]
Heredadas de std::ranges::view_interface
(C++20)
Devuelve si la vista derivada está vacía o no. Se proporciona si la vista derivada satisface forward_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
Devuelve si la vista derivada está vacía o no. Se proporciona si ranges::empty le es aplicable.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Obtiene la dirección de los datos de una vista derivada. Se proporciona si su tipo iterador satisface contiguous_iterator.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el primer elemento en la vista derivada. Se proporciona si la vista derivada satisface forward_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el último elemento en una vista derivada. Se proporciona si la vista derivada satisface bidirectional_range y common_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el enésimo elemento en la vista derivada. Se proporciona si la vista derivada satisface random_access_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]

[editar]Guías de deducción

[editar]Plantillas auxiliares

template<class T>

inlineconstexprbool enable_borrowed_range<std::ranges::drop_view<T>>=

    std::ranges::enable_borrowed_range<T>;
(desde C++20)

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

[editar]Ejemplo

#include <ranges>#include <iostream>   int main(){constauto nums ={1, 2, 3, 4, 5, 6, 7, 8, 9};   for(int i : nums | std::views::drop(2))std::cout<< i <<' ';std::cout<<'\n';   for(int i : std::views::iota(1, 10)| std::views::drop(2))std::cout<< i <<' ';std::cout<<'\n';   for(int i : std::ranges::drop_view{nums, 2})std::cout<< i <<' ';std::cout<<'\n';}

Salida:

3 4 5 6 7 8 9 3 4 5 6 7 8 9 3 4 5 6 7 8 9

[editar]Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 3494 C++20 drop_view nunca era un borrowed_range. Es un borrowed_range si su vista subyacente lo es.
LWG 3407 C++20 views::drop a veces fracasa al construir
un rango de acceso aleatorio con tamaño.
La construcción se ajusta para que siempre sea válida.

[editar]Véase también

Una vista (view) que consiste en los elementos de otra vista, saltándose la subsecuencia inicial de elementos hasta el primer elemento donde el predicado devuelva falso.
(plantilla de clase)(objeto adaptador de rango)[editar]
close