keys_view
classe (bibliothèque standard C++)
Vue sur le premier index dans chaque valeur de type tuple dans une collection. Par exemple, en fonction d’une plage de std::tuple<string, int>
, créez une vue composée de tous les string
éléments de chaque tuple.
keys_view
est un alias pour elements_view<R, 0>
lequel il est utile d’afficher les clés à partir de conteneurs associatifs comme std::map
ou std::unordered_map
.
Syntaxe
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
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::keys |
Plage sous-jacente | Doit satisfaire input_range ou supérieur |
Type d’élément | Identique au type du premier élément tuple de la plage sous-jacente |
Afficher la catégorie d’itérateur | random_access_range si la plage sous-jacente est contiguë, sinon identique à la plage sous-jacente |
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
La liste suivante des fonctions membres fait référence à la keys_view
classe. Rappelez-vous qu’il s’agit d’un alias pour l’instanciation d’un element_view
modèle de classe.
Fonctions membres | Description |
---|---|
Constructeurs C++20 | Construisez un keys_view . |
base C++20 |
Obtenez la plage sous-jacente. |
begin C++20 |
Obtenez un itérateur au premier élément. |
end C++20 |
Obtenez la sentinelle à la fin de la vue. |
size C++20 |
Obtenez le nombre d’éléments. La plage sous-jacente doit satisfaire sized_range . |
Hérité de view_interface |
Description |
back C++20 |
Obtenez le dernier élément. |
empty C++20 |
Testez si la valeur keys_view est vide. |
front C++20 |
Obtenez le premier élément. |
operator[] C++20 |
Obtenez l’élément à la position spécifiée. |
operator bool C++20 |
Testez si la valeur keys_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 tuples que vous pouvez utiliser sont keys_view
std::tuple
, std::pair
et std::array
.
Constructeurs
Construire une instance d’un keys_view
.
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Paramètres
base
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
Instance de keys_view
.
Notes
La meilleure façon de créer un keys_view
est d’utiliser l’adaptateur keys
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 keys_view
à partir de la vue spécifiée.
2) Le constructeur par défaut crée un constructeur vide keys_view
.
Exemple : keys_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <utility>
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 keys from the map
for (const std::string& standards : std::views::keys(cpp_standards))
{
std::cout << standards << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
}
std::cout << '\n';
// ========== work with a range of 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 an keys_view from each pair
for (const std::string& version : windows | std::views::keys)
{
std::cout << version << ' '; // Windows 1.0 Windows 2.0 Windows 3.0 ...
}
}
C++03 C++11 C++14 C++17 C++98 c++20
Windows 1.0 Windows 2.0 Windows 3.0 Windows 3.1 Windows NT 3.1 Windows 95 Windows NT 4.0 Windows 95 Windows 98 Windows 1.0 Windows 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 keys_view
.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires (Simple_view<V>) // or put another way, requires ranges::range<const V>;
Paramètres
Aucune.
Valeur retournée
Itérateur pointant vers le premier élément du keys_view
.
end
Obtenir la sentinelle à la fin de la keys_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 keys_view
:
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 keys_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.