std::ranges:: views:: take_while, std::ranges:: take_while_view
|
Definido en el encabezado
<ranges>
|
||
|
template
<
ranges::
view
V,
class
Pred
>
requires
ranges::
input_range
<
V
>
&&
|
(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 */
|
(desde C++20) | |
|
template
<
class
Pred
>
constexpr /*range adaptor closure*/ take_while ( Pred && pred ) ; |
(desde C++20) | |
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
.
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
|
(C++20)
|
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) |