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> &&
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 /*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 */
constexpr ranges::view auto take_while( R&& r, Pred&& pred );
|
(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.
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.
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>)
|
Guías de deducción
Clases anidadas
| El tipo centinela. (plantilla de clase miembro de solo exposición) |
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
