std::ranges::views::take_while, std::ranges::take_while_view - cppreference.com
Espacios de nombres
Variantes

std::ranges::views::take_while, std::ranges::take_while_view

De cppreference.com
 
 
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.

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.

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]
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]

Guías de deducción

Clases anidadas

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

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

Véase también