Partager via


drop_while_view classe (bibliothèque standard C++)

Vue qui contient les éléments d’une plage qui restent une fois que les éléments de début correspondant à un prédicat sont supprimés.

Syntaxe

template<ranges::view V, class P>
    requires ranges::input_range<V> &&
             std::is_object_v<P> &&
             std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;

Paramètres de modèle

V
Type de la vue sous-jacente.

P
Type du prédicat qui détermine les éléments de début à supprimer.

Afficher les caractéristiques

Pour obtenir une description des entrées suivantes, consultez les caractéristiques de classe View

Caractéristique Description
Adaptateur de plage views::drop_while
Plage sous-jacente Doit satisfaire forward_range ou supérieur et les itérateurs de la plage sous-jacente doivent modéliser sized_sentinel_for
Type d’élément Identique à la plage sous-jacente
Afficher la catégorie d’itérateur Identique à la plage sous-jacente
Taille Uniquement si la plage sous-jacente satisfait random_access_range
Est const-itérable Non
Plage commune Uniquement si la plage sous-jacente satisfait common_range
Plage empruntée Uniquement si la plage sous-jacente satisfait borrowed_range

Membres

Fonctions membres Description
Constructeurs Construisez la vue.
base Obtenez l’affichage sous-jacent.
begin Obtenez un itérateur au premier élément.
end Obtenez la sentinelle à la fin de la vue.
pred Obtenez une référence au prédicat qui détermine les éléments à supprimer.
Hérité de view_interface Description
backC++20 Obtenez le dernier élément.
dataC++20 Obtenez un pointeur vers le premier élément.
emptyC++20 Testez si la vue est vide.
frontC++20 Obtenez le premier élément.
operator[]C++20 Obtenez l’élément à la position spécifiée.
operator boolC++20 Testez si la vue n’est pas vide.
size Obtenez le nombre d’éléments dans la vue.

Spécifications

En-tête : <ranges> (depuis C++20)

Espace de noms : std::ranges

Option du compilateur : /std:c++20 ou version ultérieure est requise.

Constructeurs

Construire une instance d’un drop_while_view.

1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;

Paramètres

base
Plage sous-jacente.

pred
Prédicat qui détermine les éléments de début à supprimer.

Pour plus d’informations sur les types de paramètres de modèle, consultez Paramètres de modèle.

Valeur retournée

Instance de drop_while_view.

Notes

La meilleure façon de créer un drop_while_view est d’utiliser l’adaptateur views::drop_while de plage. Les adaptateurs de plage sont la méthode prévue pour créer des classes d’affichage. Les types d’affichage sont exposés au cas où vous souhaitez créer votre propre type d’affichage personnalisé.

1) Déplace les constructions drop_while_view à partir d’une base vue et d’un pred prédicat. Les deux base et pred sont déplacés via std::move().
2) Constructions par défaut a drop_while_view.

Exemple : drop_while_view

// requires /std:c++20 or later
#include <ranges>
#include <vector>
#include <iostream>

void print(auto v)
{
    for (auto& x : v)
    {
        std::cout << x << ' ';
    }
    std::cout << '\n';
}

int main()
{
    std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
    auto myView = std::views::drop_while(
        v,
        [](int i) {return i >= 0; });
    print(myView); // -4 5 6

    auto myView2 = v | std::views::drop_while(
        [](int i) {return i < 5; });
    print(myView2); // 5 6
}
-4 5 6
5 6

base

Obtenez l’affichage sous-jacent.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses std::move() to return the underlying view
constexpr V base() &&;

Paramètres

Aucune.

Retours

Vue sous-jacente.

begin

Obtenez un itérateur sur le premier élément de la vue.

constexpr auto begin();

Valeur retournée

Itérateur pointant vers le premier élément de la vue. Le comportement n’est pas défini si la vue n’a pas de prédicat.

Image d’un vecteur avec les éléments 10, 20 et 30. Le premier élément contient 10 et est étiqueté begin(). Le dernier élément contient 30 et est intitulé « dernier élément ». Une zone imaginaire après le dernier élément indique la sentinelle et est étiquetée end().

end

Obtenez la sentinelle à la fin de la vue.

constexpr auto end()

Valeur retournée

Sentinel qui suit le dernier élément de la vue :

Image d’un vecteur avec les éléments 10, 20 et 30. Le premier élément contient 10 et est étiqueté begin(). Le dernier élément contient 30 et est intitulé « dernier élément ». Une zone imaginaire après le dernier élément indique la sentinelle et est étiquetée end().

pred

Obtenez une référence au prédicat qui détermine les éléments de début à supprimer.

constexpr const Pred& pred() const;

Valeur retournée

Référence au prédicat.

Notes

Si la vue ne stocke pas de prédicat, le comportement n’est pas défini.

Exemple pred

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
    auto mv = v | std::views::drop_while(
        [](int i) {return i < 5; }); // drop the leading elements < 5
    std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false

Voir aussi

<ranges>
drop_while adaptateur de plage
take_while adaptateur de plage
take_while_view
afficher les classes