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 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.
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.
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
countelle est inférieure au nombre d’éléments de la plage sous-jacente, elle est retournée comme taille de l’affichage. - si
countelle est supérieure au nombre d’éléments de la plage sous-jacente, la taille de la vue estranges::size(base).