Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Widok pierwszego indeksu do każdej wartości podobnej do krotki w kolekcji. Na przykład, biorąc pod uwagę zakres std::tuple<string, int>, utwórz widok składający się ze wszystkich string elementów z każdej krotki.
keys_view jest aliasem elements_view<R, 0> i jest przydatny do wyświetlania kluczy z kontenerów asocjacyjnych, takich jak std::map lub std::unordered_map.
Składnia
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
Parametry szablonu
R
Typ bazowego zakresu. Ten typ musi spełniać ranges::input_rangewartość .
Właściwości widoku
Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)
| Charakterystyka | opis |
|---|---|
| Adapter zakresu | views::keys |
| Zakres bazowy | Musi spełniać input_range lub wyższe |
| Typ elementu | Taki sam jak typ pierwszego elementu krotki bazowego zakresu |
| Wyświetl kategorię iteratora |
random_access_range jeśli zakres bazowy jest ciągły, w przeciwnym razie jest taki sam jak zakres bazowy |
| Wielkości | Tylko wtedy, gdy zakres bazowy spełnia sized_range |
Jest constiterowalne |
Tylko wtedy, gdy zakres bazowy spełnia const-iterable |
| Wspólny zakres | Tylko wtedy, gdy zakres bazowy spełnia common_range |
| Pożyczony zakres | Tylko wtedy, gdy zakres bazowy spełnia borrowed_range |
Elementy członkowskie
Poniższa lista funkcji składowych odnosi się do keys_view klasy. Pamiętaj, że jest to alias element_view tworzenia wystąpienia szablonu klasy.
| Funkcje składowe | Opis |
|---|---|
| KonstruktoryC++20 | Skonstruuj element keys_view. |
base
C++20 |
Pobierz zakres bazowy. |
begin
C++20 |
Pobierz iterator do pierwszego elementu. |
end
C++20 |
Pobierz element sentinel na końcu widoku. |
size
C++20 |
Pobierz liczbę elementów. Zakres bazowy musi spełniać sized_rangewartość . |
Dziedziczone z view_interface |
Opis |
back
C++20 |
Pobierz ostatni element. |
empty
C++20 |
Sprawdź, czy element keys_view jest pusty. |
front
C++20 |
Pobierz pierwszy element. |
operator[]
C++20 |
Pobierz element na określonej pozycji. |
operator bool
C++20 |
Sprawdź, czy element keys_view nie jest pusty. |
Wymagania
Nagłówek:<ranges> (od C++20)
Przestrzeń nazw: std::ranges
Opcja kompilatora:/std:c++20 lub nowsza jest wymagana.
Uwagi
Typy podobne do krotki, których można używać, keys_view to std::tuple, std::pairi std::array.
Konstruktory
Skonstruuj wystąpienie klasy keys_view.
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Parametry
base
Zakres bazowy.
Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.
Wartość zwracana
keys_view Wystąpienie.
Uwagi
Najlepszym sposobem utworzenia elementu keys_view jest użycie adaptera keys zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
1) Utwórz element keys_view z określonego widoku.
2) Domyślny konstruktor tworzy pusty keys_viewobiekt .
Przykład: 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
Pobiera kopię widoku bazowego.
// 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() &&;
Parametry
Brak.
Wartość zwracana
Widok bazowy.
begin
Pobierz iterator do pierwszego elementu w pliku 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>;
Parametry
Brak.
Wartość zwracana
Iterator wskazujący pierwszy element w elemecie keys_view.
end
Pobierz sentinel na końcu 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>;
Parametry
Brak.
Wartość zwracana
Sentinel, który jest zgodny z ostatnim elementem w pliku keys_view:
size
Pobierz liczbę elementów.
constexpr auto size() requires sized_range<V>
constexpr auto size() const requires sized_range<const V>
Parametry
Brak.
Wartość zwracana
Liczba elementów w elem.keys_view
Uwagi
Rozmiar widoku jest dostępny tylko wtedy, gdy zakres bazowy to sized_range, lub innymi słowy, ograniczony.