Delen via


keys_view klasse (C++ Standaardbibliotheek)

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.

Afbeelding van een vector met de elementen 10, 20 en 30. Het eerste element bevat 10 en is gelabeld als begin(). Het laatste element bevat 30 en heeft het label 'laatste element'. Een imaginair vak na het laatste element geeft de sentinel aan en is gelabeld als end().

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:

Afbeelding van een vector met de elementen 10, 20 en 30. Het eerste element bevat 10 en is gelabeld als begin(). Het laatste element bevat 30 en heeft het label 'laatste element'. Een imaginair vak na het laatste element geeft de sentinel aan en is gelabeld als end().

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.

Zie ook

elements_view
values_view
<ranges>
Klassen weergeven