std::ranges::views::take_while, std::ranges::take_while_view
De cppreference.com
Definido en el archivo de encabezado <ranges> | ||
template< ranges::view V, class Pred > requires ranges::input_range<V> && | (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 */ | (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.
Contenido |
[editar] 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.
[editar] Funciones miembro
(C++20) | Construye un objeto take_while_view (función miembro pública) |
(C++20) | Devuelve una copia de la vista (adaptada) subyacente. (función miembro pública) |
(C++20) | Devuelve una referencia al predicado almacenado. (función miembro pública) |
(C++20) | Devuelve un iterador al comienzo. (función miembro pública) |
(C++20) | Devuelve un centinela que representa el final. (función miembro pública) |
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> ) |
(C++20) | 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> ) |
(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> ) |
(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> ) |
(C++20) | 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
[editar] Clases anidadas
El tipo centinela. (plantilla de clase miembro de solo exposición) |
[editar] Ejemplo
Ejecuta este código
#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
[editar] Véase también
(C++20) | Una vista (view ) que consiste de los primeros N elementos de otra vista.(plantilla de clase) (objeto adaptador de rango) |
Una vista (view ) que consiste en los elementos de otra vista, saltándose la subsecuencia inicial de elementos hasta el primer elemento donde el predicado devuelva falso.(plantilla de clase) (objeto adaptador de rango) |