Partager via


values_view classe (bibliothèque standard C++)

Vue composée du deuxième index dans chaque valeur de type tuple dans une collection. Par exemple, en fonction d’une plage de std::tuple<string, int> valeurs, créez une vue composée de tous les int éléments de chaque tuple.

values_view est un alias pour elements_view<R, 1> lequel il est utile de créer une vue des valeurs dans des conteneurs associatifs tels que std::unordered_map.

Syntaxe

template<input_range R>
using values_view = ranges::elements_view<R, 1>;

Paramètres de modèle

R
Type de la plage sous-jacente. Ce type doit satisfaire ranges::input_range.

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::values
Plage sous-jacente Doit satisfaire forward_range ou supérieur
Type d’élément Identique au type du deuxième élément tuple
Afficher la catégorie d’itérateur forward_range, bidirectional_range ou random_access_range
Taille Uniquement si la plage sous-jacente satisfait sized_range
Est const-itérable Uniquement si la plage sous-jacente satisfait const-iterable
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 un values_view.
baseC++20 Obtenez la plage sous-jacente.
beginC++20 Obtenez un itérateur au premier élément.
endC++20 Obtenez la sentinelle à la fin du values_view.
sizeC++20 Obtenez le nombre d’éléments.
Hérité de view_interface Description
backC++20 Obtenez le dernier élément.
emptyC++20 Testez si la valeur values_view 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 valeur values_view 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.

Notes

Les types de type tuple que vous pouvez utiliser sont values_view std::tuple, std::pairet std::array.

Constructeurs

Construire une instance d’un values_view.

1) constexpr values_view(R base);
2) values_view() requires default_initializable<V> = default;

Paramètres

base
Plage sous-jacente de types de type tuple.

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

Valeur retournée

Instance de values_view.

Notes

La meilleure façon de créer un values_view est d’utiliser l’adaptateur values 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 un values_view à partir de l’affichage spécifié.
  2. Le constructeur par défaut crée une construction values_viewpar défaut.

Exemple : values_view

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

int main()
{
    // ========== work with a std::map

    std::map<std::string, int> cpp_standards
    {
        {"C++98", 1988},
        {"C++03", 2003},
        {"C++11", 2011},
        {"C++14", 2014},
        {"C++17", 2017},
        {"C++20", 2020}
    };

    // Extract all of the values from the map
    for (int years : std::views::values(cpp_standards))
    {
        std::cout << years << ' '; // 2003 2011 2014 2017 1988 2020
    }
    std::cout << '\n';

    // ========== work with a std::pair

    std::vector<std::pair<std::string, int>> windows
    {
        {"Windows 1.0", 1985},
        {"Windows 2.0", 1987},
        {"Windows 3.0", 1990},
        {"Windows 3.1", 1992},
        {"Windows NT 3.1", 1993},
        {"Windows 95", 1995},
        {"Windows NT 4.0", 1996},
        {"Windows 95", 1995},
        {"Windows 98", 1998},
        {"Windows 1.0", 1985},
        {"Windows 2000", 2000}
    };

    // Another way to call the range adaptor using '|': create a keys_view from each pair
    for (int years : windows | std::views::values)
    {
        std::cout << years << ' '; // 1985 1987 1990 1992 ...
    }
}
2003 2011 2014 2017 1988 2020
1985 1987 1990 1992 1993 1995 1996 1995 1998 1985 2000

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() &&;

Paramètres

Aucune

Valeur retournée

Vue sous-jacente.

begin

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

// returns a non-const iterator
1) constexpr auto begin() requires (!Simple_view<V>);

// returns a const iterator
2) constexpr auto begin() const requires ranges::range<const V>;

Paramètres

Aucune.

Valeur retournée

Itérateur pointant vers le premier élément du values_view.

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

Obtenir la sentinelle à la fin de la values_view

1) constexpr auto end() requires (!Simple_view<V> && !ranges::common_range<V>);
2) constexpr auto end() requires (!Simple_view<V> && ranges::common_range<V>);
3) constexpr auto end() const requires ranges::range<const V>;
4) constexpr auto end() const requires ranges::common_range<const V>;

Paramètres

Aucune.

Valeur retournée

Sentinel qui suit le dernier élément dans le values_view

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.

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 values_view.

Notes

La taille de la vue est disponible uniquement si la plage sous-jacente est limitée sized_range, ou en d’autres termes.

Voir aussi

elements_view
keys_view
<ranges>
Afficher les classes