keys_view
Klasse (C++-Standardbibliothek)
Eine Ansicht über dem ersten Index in jedem Tupel-ähnlichen Wert in einer Auflistung. Erstellen Sie z. B. in einem Bereich std::tuple<string, int>
eine Ansicht, die string
aus allen Elementen aus jedem Tupel besteht.
keys_view
ist ein Alias für elements_view<R, 0>
und ist nützlich, um die Ansicht der Schlüssel aus assoziativen Containern wie std::map
oder std::unordered_map
.
Syntax
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
Vorlagenparameter
R
Der Typ des zugrunde liegenden Bereichs. Dieser Typ muss erfüllen ranges::input_range
.
Eigenschaften der Ansicht
Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen
Merkmal | Beschreibung |
---|---|
Range Adaptor | views::keys |
Zugrunde liegender Bereich | Muss erfüllen input_range oder höher |
Elementtyp | Identisch mit dem Typ des ersten Tupelelements des zugrunde liegenden Bereichs |
Iteratorkategorie anzeigen | random_access_range wenn der zugrunde liegende Bereich zusammenhängend ist, andernfalls identisch mit dem zugrunde liegenden Bereich |
Größer eingestellt | Nur, wenn der zugrunde liegende Bereich erfüllt ist sized_range |
Ist const -iterierbar |
Nur, wenn der zugrunde liegende Bereich erfüllt ist const-iterable |
Allgemeiner Bereich | Nur, wenn der zugrunde liegende Bereich erfüllt ist common_range |
Geliehener Bereich | Nur, wenn der zugrunde liegende Bereich erfüllt ist borrowed_range |
Member
Die folgende Liste der Memberfunktionen bezieht sich auf die keys_view
Klasse. Denken Sie daran, dass dies ein Alias für eine element_view
Klassenvorlageninstanziierung ist.
Memberfunktionen | Beschreibung |
---|---|
Konstruktoren C++20 | Erstellen Sie ein keys_view . |
base C++20 |
Rufen Sie den zugrunde liegenden Bereich ab. |
begin C++20 |
Rufen Sie einen Iterator zum ersten Element ab. |
end C++20 |
Rufen Sie den Sentinel am Ende der Ansicht ab. |
size C++20 |
Ruft die Anzahl der Elemente ab. Der zugrunde liegende Bereich muss erfüllt sein sized_range . |
Geerbt von view_interface |
Beschreibung |
back C++20 |
Rufen Sie das letzte Element ab. |
empty C++20 |
Testen Sie, ob die Datei keys_view leer ist. |
front C++20 |
Rufen Sie das erste Element ab. |
operator[] C++20 |
Rufen Sie das Element an der angegebenen Position ab. |
operator bool C++20 |
Testen Sie, ob die keys_view Datei nicht leer ist. |
Anforderungen
Header: <ranges>
(seit C++20)
Namespace:std::ranges
Compileroption: /std:c++20
oder höher ist erforderlich.
Hinweise
Die tupelähnlichen Typen, mit keys_view
denen Sie arbeiten können, sind std::tuple
, std::pair
und std::array
.
Konstruktoren
Erstellen einer Instanz eines keys_view
.
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Parameter
base
Der zugrunde liegende Bereich.
Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.
Rückgabewert
Eine keys_view
-Instanz.
Hinweise
Die beste Methode zum Erstellen eines Elements keys_view
ist die Verwendung des keys
Bereichsadapters. Bereichsadapter sind die beabsichtigte Möglichkeit zum Erstellen von Ansichtsklassen. Die Ansichtstypen werden für den Fall verfügbar gemacht, dass Sie ihren eigenen benutzerdefinierten Ansichtstyp erstellen möchten.
1) Erstellen Sie eine keys_view
aus der angegebenen Ansicht.
2) Der Standardkonstruktor erstellt einen leeren keys_view
.
Beispiel: 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
Ruft eine Kopie der zugrunde liegenden Ansicht ab.
// 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() &&;
Parameter
Keine
Rückgabewert
Die zugrunde liegende Ansicht.
begin
Rufen Sie einen Iterator zum ersten Element in der 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>;
Parameter
Keine
Rückgabewert
Ein Iterator, der auf das erste Element in der keys_view
.
end
Abrufen des Sentinels am Ende des 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>;
Parameter
Keine
Rückgabewert
Der Sentinel, der auf das letzte Element in der keys_view
:
size
Ruft die Anzahl der Elemente ab.
constexpr auto size() requires sized_range<V>
constexpr auto size() const requires sized_range<const V>
Parameter
Keine
Rückgabewert
Die Anzahl der Elemente im keys_view
.
Hinweise
Die Größe der Ansicht ist nur verfügbar, wenn der zugrunde liegende Bereich ein sized_range
oder mit anderen Worten begrenzt ist.