values_view Klasse (C++-Standardbibliothek)

Eine Ansicht, die aus dem zweiten Index in jedem Tupel-ähnlichen Wert in einer Auflistung besteht. Erstellen Sie beispielsweise bei einem Wertebereich std::tuple<string, int> eine Ansicht, die int aus allen Elementen aus jedem Tupel besteht.

values_view ist ein Alias für elements_view<R, 1> und ist nützlich zum Erstellen einer Ansicht der Werte in assoziativen Containern wie z std::unordered_map. B. .

Syntax

template<input_range R>
using values_view = ranges::elements_view<R, 1>;

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::values
Zugrunde liegender Bereich Muss erfüllen forward_range oder höher
Elementtyp Identisch mit dem Typ des zweiten Tupelelements
Iteratorkategorie anzeigen forward_range, bidirectional_rangeoder random_access_range
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

Memberfunktionen Beschreibung
Konstruktoren C++20 Erstellen Sie ein values_view.
baseC++20 Rufen Sie den zugrunde liegenden Bereich ab.
beginC++20 Rufen Sie einen Iterator zum ersten Element ab.
endC++20 Rufen Sie den Sentinel am Ende der .values_view
sizeC++20 Ruft die Anzahl der Elemente ab.
Geerbt von view_interface Beschreibung
backC++20 Rufen Sie das letzte Element ab.
emptyC++20 Testen Sie, ob die Datei values_view leer ist.
frontC++20 Rufen Sie das erste Element ab.
operator[]C++20 Rufen Sie das Element an der angegebenen Position ab.
operator boolC++20 Testen Sie, ob die values_view Datei nicht leer ist.

Anforderungen

Header: <ranges> (seit C++20)

Namespace:std::ranges

Compileroption: /std:c++20 oder höher ist erforderlich.

Hinweise

Tupelähnliche Typen, mit values_view denen Sie arbeiten können, sind std::tuple, std::pairund std::array.

Konstruktoren

Erstellen einer Instanz eines values_view.

1) constexpr values_view(R base);
2) values_view() requires default_initializable<V> = default;

Parameter

base
Der zugrunde liegende Bereich von Tupel-ähnlichen Typen.

Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.

Rückgabewert

Eine values_view-Instanz.

Hinweise

Die beste Methode zum Erstellen eines Elements values_view ist die Verwendung des values 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 values_view aus der angegebenen Ansicht.
  2. Der Standardkonstruktor erstellt einen standardmäßig konstruierten values_view.

Beispiel: values_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>

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 values from the map
    for (int years : std::views::values(cpp_standards))
    {
        std::cout << years << ' '; // 2003 2011 2014 2017 1988 2020
    }
    std::cout << '\n';

    // ========== work with a 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 a keys_view from each pair
    for (int years : windows | std::views::values)
    {
        std::cout << years << ' '; // 1985 1987 1990 1992 ...
    }
}
2003 2011 2014 2017 1988 2020
1985 1987 1990 1992 1993 1995 1996 1995 1998 1985 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 values_view.

// returns a non-const iterator
1) constexpr auto begin() requires (!Simple_view<V>);

// returns a const iterator
2) constexpr auto begin() const requires ranges::range<const V>;

Parameter

Keine

Rückgabewert

Ein Iterator, der auf das erste Element in der values_view.

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

end

Abrufen des Sentinels am Ende des values_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 im values_view

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

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 values_view.

Hinweise

Die Größe der Ansicht ist nur verfügbar, wenn der zugrunde liegende Bereich ein sized_rangeoder mit anderen Worten begrenzt ist.

Siehe auch

elements_view
keys_view
<ranges>
Anzeigen von Klassen