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
>
&&
|
(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
/* voir ci-dessous */
|
(depuis C++20) | |
|
template
<
class
Pred
>
constexpr /*adaptateur de gamme de fermeture*/ take_while ( Pred && pred ) ; |
(depuis C++20) | |
view
des éléments d'une séquence sous-jacente, commençant au début et se terminant au premier élément pour lequel le prédicat retourne
false
.
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.
Table des matières |
Membres de données
| Membre | Description |
V
base_
(privé)
|
la vue sous-jacente
( objet membre d'exposition uniquement* ) |
copyable-box
<Pred>
(jusqu'à C++23)
movable-box
<Pred>
(depuis C++23)
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 std::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)
|
retourne un itérateur constant vers le début de la plage
(fonction membre publique de
std::ranges::view_interface<D>
)
|
|
(C++23)
|
retourne 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>
)
|
|
retourne le premier élément de la vue dérivée, fourni si elle satisfait
forward_range
(fonction membre publique de
std::ranges::view_interface<D>
)
|
|
retourne le
n
ème
élément de 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) |