Partager via


common_view classe (bibliothèque standard C++)

Prenez une plage qui peut avoir différents types d’itérateur et de sentinelle et créer une vue qui a le même itérateur et le même type sentinel. Cela est utile pour appeler des algorithmes STL qui acceptent des plages spécifiées par des paires d’itérateurs.

Syntaxe

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

Paramètres de modèle

V
Type de la vue sous-jacente.

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::common
Plage sous-jacente Doit satisfaire forward_range ou supérieur
Type d’élément Identique à la plage sous-jacente
Afficher la catégorie d’itérateur forward_range ou random_access_range lorsque la plage sous-jacente satisfait random_access_range et sized_range
Taille Uniquement si la plage sous-jacente satisfait sized_range
Est const-itérable Uniquement si la plage sous-jacente est const itérable
Plage commune Oui
Plage empruntée Uniquement si la plage sous-jacente satisfait borrowed_range

Membres

Fonctions membres Description
Constructeurs C++20 Construisez un common_view.
baseC++20 Obtenez l’affichage sous-jacent.
beginC++20 Obtenez un itérateur sur le premier élément de la vue.
endC++20 Obtenez la sentinelle à la fin de la vue.
sizeC++20 Obtenez le nombre d’éléments dans la vue.
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.

Notes

La meilleure façon de créer un common_view est d’utiliser l’adaptateur views::common 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é.

Cette vue est utile pour passer une plage qui a différents types itérateur/sentinel à un algorithme hérité qui s’attend à ce qu’elles soient identiques.

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

Créez une instance de common_view.

1) common_view() = default;
2) constexpr explicit common_view(V v);

Paramètres

v
Vue sous-jacente.

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

Notes

1) Construit par défaut le common_view.
2) Construit un à common_view partir de la vue sous-jacente à l’aide std::move(v)de . Une erreur se produit s’il s’agit V d’une plage commune pour éviter toute utilisation incorrecte qui aurait un impact négatif sur les performances.

base

Obtient une copie de la vue sous-jacente.

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

// Uses a move constructor to return the underlying view
constexpr V base() &&;

begin

Obtenez un itérateur au premier élément.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

Valeur retournée

Itérateur pointant vers le premier é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().

end

Obtenez la sentinelle à la fin de la vue.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

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().

size

Obtenez le nombre d’éléments dans la vue.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Paramètres

Aucune.

Valeur retournée

Nombre d’éléments dans la vue.

Voir aussi

<ranges>
common adaptateur de plage
afficher les classes