keys_view
classe (libreria standard C++)
Vista sul primo indice in ogni valore simile a una tupla in una raccolta. Ad esempio, dato un intervallo di std::tuple<string, int>
, creare una vista costituita da tutti gli string
elementi di ogni tupla.
keys_view
è un alias per elements_view<R, 0>
ed è utile per visualizzare le chiavi da contenitori associativi come std::map
o std::unordered_map
.
Sintassi
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
Parametri del modello
R
Tipo dell'intervallo sottostante. Questo tipo deve soddisfare ranges::input_range
.
Visualizzare le caratteristiche
Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe
Caratteristica | Descrizione |
---|---|
Adattatore di intervallo | views::keys |
Intervallo sottostante | Deve soddisfare input_range o superiore |
Tipo di elemento | Uguale al tipo del primo elemento tupla dell'intervallo sottostante |
Visualizzare la categoria iteratore | random_access_range se l'intervallo sottostante è contiguo; in caso contrario, uguale all'intervallo sottostante |
Dimensioni | Solo se l'intervallo sottostante soddisfa sized_range |
Iterabile const |
Solo se l'intervallo sottostante soddisfa const-iterable |
Intervallo comune | Solo se l'intervallo sottostante soddisfa common_range |
Intervallo preso in prestito | Solo se l'intervallo sottostante soddisfa borrowed_range |
Membri
L'elenco seguente di funzioni membro fa riferimento alla keys_view
classe . Tenere presente che si tratta di un alias per la creazione di istanze di un element_view
modello di classe.
Funzioni membro | Descrizione |
---|---|
Costruttori C++20 | Creare un oggetto keys_view . |
base C++20 |
Ottenere l'intervallo sottostante. |
begin C++20 |
Ottenere un iteratore al primo elemento. |
end C++20 |
Ottenere l'sentinel alla fine della visualizzazione. |
size C++20 |
Ottiene il numero di elementi. L'intervallo sottostante deve soddisfare sized_range . |
Ereditato da view_interface |
Descrizione |
back C++20 |
Ottiene l'ultimo elemento. |
empty C++20 |
Verificare se l'oggetto keys_view è vuoto. |
front C++20 |
Ottenere il primo elemento. |
operator[] C++20 |
Ottiene l'elemento nella posizione specificata. |
operator bool C++20 |
Verificare se l'oggetto keys_view non è vuoto. |
Requisiti
Intestazione: <ranges>
(da C++20)
Spazio dei nomi: std::ranges
Opzione del compilatore: /std:c++20
o versione successiva è obbligatoria.
Osservazioni:
I tipi simili a tupla che è possibile usare con keys_view
sono std::tuple
, std::pair
e std::array
.
Costruttori
Costruire un'istanza di un oggetto keys_view
.
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Parametri
base
Intervallo sottostante.
Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.
Valore restituito
Istanza di keys_view
.
Osservazioni:
Il modo migliore per creare un keys_view
oggetto consiste nell'usare l'adattatore keys
di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.
1) Creare un oggetto keys_view
dalla vista specificata.
2) Il costruttore predefinito crea un oggetto vuoto keys_view
.
Esempio: 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
Ottiene una copia della visualizzazione sottostante.
// 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() &&;
Parametri
Nessuna.
Valore restituito
Visualizzazione sottostante.
begin
Ottenere un iteratore al primo elemento dell'oggetto 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>;
Parametri
Nessuna.
Valore restituito
Iteratore che punta al primo elemento dell'oggetto keys_view
.
end
Ottenere la sentinella alla fine del 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>;
Parametri
Nessuna.
Valore restituito
Sentinel che segue l'ultimo elemento in keys_view
:
size
Ottiene il numero di elementi.
constexpr auto size() requires sized_range<V>
constexpr auto size() const requires sized_range<const V>
Parametri
Nessuna.
Valore restituito
Numero di elementi in keys_view
.
Osservazioni:
Le dimensioni della vista sono disponibili solo se l'intervallo sottostante è , sized_range
o in altre parole, delimitato.