std::ranges::vistas::take_while, std::ranges::take_while_view
| 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) | |
false.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*) | ||||
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
|
(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) |