Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een weergave van de eerste index in elke tuple-achtige waarde in een verzameling. Als u bijvoorbeeld een bereik hebt std::tuple<string, int>, maakt u een weergave die bestaat uit alle string elementen van elke tuple.
keys_view is een alias voor elements_view<R, 0> en is handig voor het maken van weergave van de sleutels van associatieve containers zoals std::map of std::unordered_map.
Syntaxis
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
Sjabloonparameters
R
Het type van het onderliggende bereik. Dit type moet voldoen aan ranges::input_range.
Kenmerken weergeven
Zie Klassekenmerken weergeven voor een beschrijving van de volgende vermeldingen
| Karakteristiek | Beschrijving |
|---|---|
| Bereikadapter | views::keys |
| Onderliggend bereik | Moet voldoen aan input_range of hoger |
| Elementtype | Hetzelfde als het type van het eerste tuple-element van het onderliggende bereik |
| Iteratorcategorie weergeven |
random_access_range als het onderliggende bereik aaneengesloten is, anders hetzelfde als het onderliggende bereik |
| Formaat | Alleen als het onderliggende bereik voldoet aan sized_range |
Is const-iterable |
Alleen als het onderliggende bereik voldoet aan const-iterable |
| Algemeen bereik | Alleen als het onderliggende bereik voldoet aan common_range |
| Geleend bereik | Alleen als het onderliggende bereik voldoet aan borrowed_range |
Leden
De volgende lijst met lidfuncties verwijst naar de keys_view klasse. Zoals u weet, is dit een alias voor een instantie van een element_view klassesjabloon.
| Lidfuncties | Beschrijving |
|---|---|
| ConstructorsC++20 | Maak een keys_view. |
base
C++20- |
Haal het onderliggende bereik op. |
begin
C++20- |
Haal een iterator naar het eerste element. |
end
C++20- |
Haal de sentinel aan het einde van de weergave op. |
size
C++20- |
Het aantal elementen ophalen. Het onderliggende bereik moet voldoen aan sized_range. |
Overgenomen van view_interface |
Beschrijving |
back
C++20- |
Haal het laatste element op. |
empty
C++20- |
Test of het keys_view leeg is. |
front
C++20- |
Haal het eerste element op. |
operator[]
C++20- |
Haal het element op de opgegeven positie op. |
operator bool
C++20- |
Test of het keys_view niet leeg is. |
Behoeften
Rubriek:<ranges> (sinds C++20)
Namespace:std::ranges
Compileroptie:/std:c++20 of hoger is vereist.
Opmerkingen
De tuple-achtige typen waarmee u kunt gebruiken keys_view zijn std::tuple, std::pairen std::array.
Constructeurs
Een exemplaar van een keys_view.
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Parameterwaarden
base
Het onderliggende bereik.
Zie Sjabloonparameters voor meer informatie over het type sjabloonparameter.
Retourwaarde
Een keys_view exemplaar.
Opmerkingen
De beste manier om een keys_view te maken is door gebruik te maken van de keys bereikadapter. Bereikadapters zijn de beoogde manier om weergaveklassen te maken. De weergavetypen worden weergegeven voor het geval u uw eigen aangepaste weergavetype wilt maken.
1) Maak een keys_view van de opgegeven weergave.
2) De standaardconstructor maakt een lege keys_view.
Voorbeeld: 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
Hiermee haalt u een kopie van de onderliggende weergave op.
// 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() &&;
Parameterwaarden
Geen.
Retourwaarde
De onderliggende weergave.
begin
Haal een iterator naar het eerste element in de 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>;
Parameterwaarden
Geen.
Retourwaarde
Een iterator die wijst naar het eerste element in de keys_view.
end
De sentinel aan het einde van de 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>;
Parameterwaarden
Geen.
Retourwaarde
De sentinel die het laatste element in het keys_viewvolgende element volgt:
size
Het aantal elementen ophalen.
constexpr auto size() requires sized_range<V>
constexpr auto size() const requires sized_range<const V>
Parameterwaarden
Geen.
Retourwaarde
Het aantal elementen in de keys_view.
Opmerkingen
De grootte van de weergave is alleen beschikbaar als het onderliggende bereik een sized_range, of met andere woorden, gebonden is.