std::ranges::views::take_while, std::ranges::take_while_view
| Défini dans l'en-tête <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) | (depuis C++20) |
namespace views {
inline constexpr /*unspecified*/ take_while = /*unspecified*/;
}
|
(2) | (depuis C++20) |
| Signature d'appel |
||
template< ranges::viewable_range R, class Pred >
requires /* see below */
constexpr ranges::view auto take_while( R&& r, Pred&& pred );
|
(depuis C++20) | |
template< class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred );
|
(depuis C++20) | |
false.views::take_while(e, f) est équivalente à une expression à take_while_view(e, f) pour toutes sous-expressions appropriées e et f.take_while_view modélise les concepts contiguous_range, random_access_range, bidirectional_range, forward_range, et input_range lorsque la vue sous-jacente V modélise les concepts respectifs.
Membres de données
| Membre | Description | ||||
V base_ (privé)
|
la vue sous-jacente (objet membre d'exposition uniquement*) | ||||
pred_ (privé)
|
l'objet fonction sous-jacent (objet membre d'exposition uniquement*) |
Fonctions membres
construit un
take_while_view
(fonction membre publique) |
|
|
retourne une copie de la vue sous-jacente (adaptée)
(fonction membre publique) |
|
|
retourne une référence au prédicat stocké
(fonction membre publique) |
|
|
retourne un itérateur vers le début
(fonction membre publique) |
|
|
retourne un sentinelle représentant la fin
(fonction membre publique) |
|
Hérité de ranges::view_interface | |
| indique si la vue dérivée est vide, fourni uniquement si elle satisfait sized_range ou forward_range (fonction membre publique de std::ranges::view_interface<D>)
| |
(C++23) |
renvoie un itérateur constant au début de la plage (fonction membre publique de std::ranges::view_interface<D>)
|
(C++23) |
renvoie un sentinelle pour l'itérateur constant de la plage (fonction membre publique de std::ranges::view_interface<D>)
|
| indique si la vue dérivée n'est pas vide, fourni uniquement si ranges::empty lui est applicable (fonction membre publique de std::ranges::view_interface<D>)
| |
| obtient l'adresse des données de la vue dérivée, fourni uniquement si son type d'itérateur satisfait contiguous_iterator (fonction membre publique de std::ranges::view_interface<D>)
| |
| renvoie le premier élément dans la vue dérivée, fourni si elle satisfait forward_range (fonction membre publique de std::ranges::view_interface<D>)
| |
renvoie le nème élément dans la vue dérivée, fourni uniquement si elle satisfait random_access_range (fonction membre publique de std::ranges::view_interface<D>)
| |
Guides de déduction
Classes imbriquées
|
le type sentinelle
( classe membre template* d'exposition uniquement ) |
Notes
Pour les
forward_iterator
s
,
views
::
take_while
(
v, pred
)
est similaire à
ranges::
subrange
{
ranges::
begin
(
v
)
,
ranges::
find_if_not
(
v, pred
)
}
, mais cette dernière n'invoque
pred
que lors de la construction (tandis que la première invoque
pred
à chaque fois qu'un itérateur valide de
take_while
est comparé à un sentinelle).
Exemple
#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'; }
Sortie :
2020 2021 2022 2023 2024 2025 Today is yesterday's tomorrow!
Voir aussi
|
(C++20)
|
une
view
constituée des N premiers éléments d'une autre
view
(modèle de classe) (objet adaptateur de plage) |
une
view
constituée des éléments d'une autre
view
, ignorant la sous-séquence initiale d'éléments jusqu'au premier élément où le prédicat retourne
false
(modèle de classe) (objet adaptateur de plage) |