Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vue qui filtre les éléments d’une plage qui ne correspondent pas au prédicat.
Syntaxe
template<ranges::input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
requires view<V> && is_object_v<Pred>
class filter_view : public view_interface<filter_view<V, Pred>>;
Paramètres de modèle
V
Type de la plage sous-jacente.
Pred
Type du prédicat qui détermine les éléments à conserver.
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::filter |
| Plage sous-jacente | Doit satisfaire input_range ou supérieur |
| Type d’élément | Identique à la plage sous-jacente |
| Afficher la catégorie d’itérateur | input_range, forward_rangeou bidirectional_range en fonction de la plage sous-jacente |
| Taille | Non |
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 C++20 | Construisez la vue. |
baseC++20 |
Obtenez la plage sous-jacente. |
beginC++20 |
Obtenez un itérateur au premier élément. |
endC++20 |
Obtenez la sentinelle à la fin de la vue. |
predC++20 |
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. |
emptyC++20 |
Testez si la vue est vide. |
frontC++20 |
Obtenez le premier élément. |
operator boolC++20 |
Testez si la vue n’est pas vide. |
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 filter_view
1) constexpr filter_view(V base, P pred);
2) filter_view() requires default_initializable<V> && default_initializable<Pred> = default;
Paramètres
base
Vue sous-jacente.
pred
Prédicat qui détermine les éléments à conserver de la vue sous-jacente.
Pour plus d’informations sur les types de paramètres de modèle, consultez Paramètres de modèle.
Valeur retournée
Instance de filter_view.
Notes
La meilleure façon de créer un filter_view est d’utiliser l’adaptateur views::filter 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) Créez une valeur initialisée filter_view. Le prédicat et la vue sous-jacente doivent être initialisables par défaut.
2) Déplace les constructions filter_view à partir d’une vue et d’un base pred prédicat. Les deux base et pred sont déplacés via std::move().
Exemple : filter_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
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::filter(v, [](int i) {return i > 0; });
print(myView); // outputs 1 3 6
auto myView2 = v | std::views::filter([](int i) {return i < 3; });
print(myView2); // outputs 0 1 -2 -4 -5
}
1 3 6
0 1 -2 -4 -5
base
Obtient la plage sous-jacente.
// Uses a copy constructor to return the underlying range
constexpr V base() const& requires std::copy_constructible<V>;
// Uses std::move() to return the underlying range
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.
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 :
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 classe 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::filter(
[](int i) {return i < 5; }); // keep the 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)
}
Voir aussi
<ranges>
filter adaptateur de plage
drop_while()
take_while()
afficher les classes