Condividi tramite


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.
baseC++20 Ottenere l'intervallo sottostante.
beginC++20 Ottenere un iteratore al primo elemento.
endC++20 Ottenere l'sentinel alla fine della visualizzazione.
sizeC++20 Ottiene il numero di elementi. L'intervallo sottostante deve soddisfare sized_range.
Ereditato da view_interface Descrizione
backC++20 Ottiene l'ultimo elemento.
emptyC++20 Verificare se l'oggetto keys_view è vuoto.
frontC++20 Ottenere il primo elemento.
operator[]C++20 Ottiene l'elemento nella posizione specificata.
operator boolC++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::paire 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.

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

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:

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

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_rangeo in altre parole, delimitato.

Vedi anche

elements_view
values_view
<ranges>
Visualizzare le classi