Espacios de nombres
Variantes
Acciones

std::ranges::views::take_while, std::ranges::take_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 take_while_view : public ranges::view_interface<take_while_view<V, Pred>>
(1)(desde C++20)
namespace views {

    inline constexpr /*no especificado*/ take_while = /*no especificado*/;

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

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

constexpr ranges::view auto take_while( R&& r, Pred&& pred );
(desde C++20)
template< class Pred >
constexpr /*cierre de adaptador de rango*/ take_while( Pred&& pred );
(desde C++20)
1) Un adaptador de rango que representa una vista (view) de los elementos de una secuencia subyacente, iniciando en el comienzo y terminando en el primer elemento para el que el predicado devuelve false.
2) Objeto adaptador de rango. La expresión views::take_while(e, f) es equivalente en expresión a take_while_view(e, f) para cualquier expresión e y f adecuadas.

take_while_view modela los conceptos contiguous_range, random_access_range, bidirectional_range, forward_range, y input_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 take_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 centinela que representa el 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 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 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] Clases anidadas

El tipo centinela.
(plantilla de clase miembro de solo exposición)

[editar] Ejemplo

#include <ranges>
#include <iostream>
 
int main()
{
    for (int year : std::views::iota(2017)
                  | std::views::take_while([](int y) { return y <= 2020; })) {
        std::cout << year << ' ';
    }
    std::cout << '\n';
 
    const char idea[] {"Hoy es el mañana del ayer.."};
    for (char x : std::ranges::take_while_view(idea, [](char c) { return c != '.'; })) {
        std::cout << x;
    }
    std::cout << '\n';
}

Salida:

2017 2018 2019 2020 
Hoy es el mañana del ayer

[editar] Véase también

Una vista (view) que consiste de los primeros N elementos de otra vista.
(plantilla de clase) (objeto adaptador de rango) [editar]
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]