Namespaces
Variants

std::ranges::vistas::take_while, std::ranges::take_while_view

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
Definido en el 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 /*unspecified*/ take_while = /*unspecified*/;
}
(2) (desde C++20)
Signatura de llamada
template< ranges::viewable_range R, class Pred >
    requires /* see below */
constexpr ranges::view auto take_while( R&& r, Pred&& pred );
(desde C++20)
template< class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred );
(desde C++20)
1)Un adaptador de rango que representa una vista de los elementos de una secuencia subyacente, comenzando al inicio y terminando en el primer elemento para el cual el predicado devuelve false.
2) ObjetoAdaptadorDeRango. La expresión views::take_while(e, f) es equivalente-en-expresión a take_while_view(e, f) para cualquier subexpresión adecuada e y f.

take_while_viewmodela los conceptos contiguous_range, random_access_range, bidirectional_range, forward_range, e input_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 para exposición*)

copyable-box<Pred>

(hasta C++23)

movable-box<Pred>

(desde C++23)
pred_ (privado)
el objeto función subyacente
(objeto miembro solo para exposición*)

Funciones miembro

construye un take_while_view
(función miembro pública)
devuelve una copia de la vista subyacente (adaptada)
(función miembro pública)
devuelve una referencia al predicado almacenado
(función miembro pública)
devuelve un iterador al inicio
(función miembro pública)
devuelve un centinela que representa el final
(función miembro pública)
Heredado de ranges::view_interface
devuelve si la vista derivada está vacía, siempre que satisfaga 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, 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, solo si su tipo de iterador satisface contiguous_iterator
(función miembro pública de std::ranges::view_interface<D>)
devuelve el primer elemento en la vista derivada, si esta satisface forward_range
(función miembro pública de std::ranges::view_interface<D>)
devuelve el nésimo elemento en la vista derivada, solo si esta satisface random_access_range
(función miembro pública de std::ranges::view_interface<D>)

Guías de deducción

Clases anidadas

el tipo de centinela
( clase de plantilla de miembro solo para exposición* )

Notas

Para los forward_iterator s , views :: take_while ( v, pred ) es similar a ranges:: subrange { ranges:: begin ( v ) , ranges:: find_if_not ( v, pred ) } , pero este último invoca pred solo durante la construcción (mientras que el primero invoca pred cada vez que se compara un iterador válido de take_while con un centinela).

Ejemplo

#include <iostream>
#include <ranges>
int main()
{
    for (int year : std::views::iota(2020)
                  | std::views::take_while([](int y){ return y < 2026; }))
        std::cout << year << ' ';
    std::cout << '\n';
    const char note[]{"Today is yesterday's tomorrow!..."};
    auto not_dot = [](char c){ return c != '.'; };
    for (char x : std::ranges::take_while_view(note, not_dot))
        std::cout << x;
    std::cout << '\n';
}

Salida:

2020 2021 2022 2023 2024 2025
Today is yesterday's tomorrow!

Véase también

una view que consiste en los primeros N elementos de otra view
(plantilla de clase) (objeto adaptador de rango)
una view que consiste en los elementos de otra view , omitiendo la subsecuencia inicial de elementos hasta el primer elemento donde el predicado devuelve false
(plantilla de clase) (objeto adaptador de rango)