Namespaces
Variants

std::ranges:: views:: take_while, std::ranges:: take_while_view

From cppreference.net
Ranges library
Range adaptors
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 /* voir ci-dessous */

constexpr ranges:: view auto take_while ( R && r, Pred && pred ) ;
(depuis C++20)
template < class Pred >
constexpr /*adaptateur de gamme de fermeture*/ take_while ( Pred && pred ) ;
(depuis C++20)
1) Un adaptateur de gamme qui représente 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 .
2) RangeAdaptorObject . L'expression views :: take_while ( e, f ) est équivalente en 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.

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

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)