Espacios de nombres
Variantes
Acciones

std::ranges::views::drop_while, std::ranges::drop_while_view

De cppreference.com
< cpp‎ | ranges
 
 
Biblioteca de rangos
Adaptadores de rangos
 
 
Definido en el archivo de encabezado <ranges>
template<ranges::view V, class Pred >

    requires ranges::input_range<V>&&
             std::is_object_v<Pred>&&
             std::indirect_unary_predicate<const Pred, ranges::iterator_t<V>>

class drop_while_view :publicranges::view_interface<drop_while_view<V, Pred>>
(1) (desde C++20)
namespace views {

    inlineconstexpr/*no especificado*/ drop_while =/*no especificado*/;

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

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

constexprranges::viewauto drop_while( R&& r, Pred&& pred );
(desde C++20)
template<class Pred >
constexpr/*cierre de adaptador de rango*/ drop_while( Pred&& pred );
(desde C++20)
1) Un adaptador de rango que representa una vista (view) de elementos de una secuencia subyacente, comenzando en el primer elemento para el que el predicado devuelve false.
2)Objetos adaptadores de rango. La expresión views::drop_while(e, f) es equivalente en expresión a drop_while_view(e, f) para cualquier subexpresión e y f adecuadas.

drop_while_view modela los conceptos contiguous_range, random_access_range, bidirectional_range, forward_range, input_range, y common_range cuando la vista subyacente V modela los conceptos respectivos. También modela sized_range si ranges::forward_range<V> y std::sized_sentinel_for<ranges::sentinel_t<V>, ranges::iterator_t<V>> se modelan.

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_while_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 una referencia al predicado almacenado.
(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]
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 número de elementos en la vista derivada. Se proporciona si la vista derivada satisface forward_range y su centinela y tipo iterador satisfacen sized_sentinel_for.
(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, class Pred>

inlineconstexprbool enable_borrowed_range<std::ranges::drop_while_view<T, Pred>>=

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

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

[editar]Notas

Para proporcionar la complejidad de tiempo constante amortizada requerida por el concepto range, el resultado de begin se almacena en caché dentro del objeto drop_while_view. Si el rango subyacente se modifica después de la primera llamada a begin(), los usos posteriores del objeto drop_while_view pueden tener un comportamiento no intuitivo.

[editar]Ejemplo

#include <cctype>#include <iomanip>#include <iostream>#include <ranges>#include <string>#include <string_view>   std::string trim(std::string_viewconst in){auto view = in | std::views::drop_while(isspace)| std::views::reverse| std::views::drop_while(isspace)| std::views::reverse;return{view.begin(), view.end()};}   int main(){constauto s = trim(" \f\n\t\r\vHola, C++20!\f\n\t\r\v ");std::cout<<std::quoted(s)<<'\n';   staticconstexprauto v ={0, 1, 2, 3, 4, 5};for(int n : v | std::views::drop_while([](int i){return i <3;})){std::cout<< n <<' ';}}

Salida:

"Hola, C++20!" 3 4 5

[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_while_view nunca era un borrowed_range. Es un borrowed_range si su vista subyacente lo es.

[editar]Véase también

Una vista (view) que consiste en los elementos de otra vista, saltándose los primeros N elementos.
(plantilla de clase)(objeto adaptador de rango)[editar]
close