Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
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)
Firma de llamada
template < ranges:: viewable_range R, class Pred >

requires /* ver más abajo */

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 view de los elementos de una secuencia subyacente, comenzando desde el inicio y terminando en el primer elemento para el cual el predicado devuelve false .
2) RangeAdaptorObject . La expresión views :: take_while ( e, f ) es equivalente-expresión a take_while_view ( e, f ) para cualesquiera subexpresiones adecuadas e y f .

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 respectivos conceptos.

Contenidos

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 std::ranges::view_interface
devuelve si la vista derivada está vacía, proporcionado solo si satisface 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, proporcionado 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, proporcionado 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, proporcionado si satisface forward_range
(función miembro pública de std::ranges::view_interface<D> )
devuelve el n ésimo elemento en la vista derivada, proporcionado solo si 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)