Partager via


take_view classe (bibliothèque standard C++)

Vue des premiers éléments N d’une autre vue.

Syntaxe

template<view V>
class take_view : public view_interface<take_view<V>>;

Paramètres de modèle

V
Type de la plage 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::take
Plage sous-jacente Toute plage
Type d’élément Identique à la plage sous-jacente
Afficher la catégorie d’itérateur Identique à la plage sous-jacente
Taille Non
Est const-itérable Uniquement si la plage sous-jacente est const itérable
Plage commune Uniquement si la plage sous-jacente satisfait random_access_range et sized_range
Plage empruntée Uniquement si la plage sous-jacente est borrowed_range

Membres

Fonctions membres Description
Constructeurs 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.
sizeC++20 Obtenez le nombre d’éléments. La plage sous-jacente doit satisfaire sized_range.
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.

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 take_view

1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);

Paramètres

base
Vue sous-jacente.

count
Nombre d’éléments à prendre à partir de l’avant de la vue sous-jacente. Si count elle est supérieure au nombre d’éléments de la vue sous-jacente, la vue contient tous les éléments de la plage sous-jacente.

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

Valeur retournée

A take_view, qui est une vue des premiers éléments N d’une autre vue. Si vous spécifiez plus d’éléments à supprimer qu’il n’existe dans la plage sous-jacente, un empty_view élément est retourné.

Notes

La meilleure façon de créer un take_view est d’utiliser l’adaptateur views::take 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 uniquement si vous souhaitez créer votre propre type d’affichage personnalisé.

1) Créez un take_view élément qui n’a aucun élément. La vue sous-jacente est construite par défaut. base() retourne une copie de V().
2) Créez une take_view valeur à partir d’un nombre et d’un base nombre. base est déplacé via std::move().

Si count elle est inférieure au nombre d’éléments de la plage sous-jacente, count détermine la taille du take_view.
Si count elle est supérieure au nombre d’éléments de la plage sous-jacente, elle take_view inclut tous les éléments de la plage sous-jacente.

Exemple : take_view

// 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 newView = std::views::take(v, 3);
    
    for (auto& e : newView)
    {
        std::cout << e << ' '; // 0 1 2
    }
    std::cout << '\n';

    // Use the '|' operator to create a take_view
    for (auto i : v | std::views::take(3))
    {
        std::cout << i << ' '; // 0 1 2
    }
}
0 1 2
0 1 2

base

Obtient une copie de la vue sous-jacente.

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

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

Paramètres

Aucune.

Valeur retournée

Vue sous-jacente.

begin

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

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

Paramètres

Aucune.

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

Notes

Pour 1, l’exigence Simple_view<V> signifie que la vue V et const V doit avoir le même itérateur et les mêmes types de sentinelles.

end

Obtenez la sentinelle à la fin de la vue.

1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;

Paramètres

Aucune.

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

Notes

Pour 1, l’exigence Simple_view<V> signifie que la vue V et const V doit avoir le même itérateur et les mêmes types de sentinelles.

size

Obtenez le nombre d’éléments.

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

Paramètres

Aucune.

Valeur retournée

Nombre d'éléments dans take_view.
Si l’objet take_view a été construit avec un élément explicite count:

  • si count elle est inférieure au nombre d’éléments de la plage sous-jacente, elle est retournée comme taille de l’affichage.
  • si count elle est supérieure au nombre d’éléments de la plage sous-jacente, la taille de la vue est ranges::size(base).

Voir aussi

<ranges>
take adaptateur de plage
afficher les classes