reverse_view Klasse (C++-Standardbibliothek)

Eine Ansicht der Elemente eines Bereichs in umgekehrter Reihenfolge.

Syntax

template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;

Vorlagenparameter

V
Der Typ der zugrunde liegenden Ansicht.
Dieser Typ muss erfüllen ranges::bidirectional_range.

Eigenschaften der Ansicht

Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen

Merkmal Beschreibung
Range Adaptor views::reverse
Zugrunde liegender Bereich Muss bis bidirectional_range zu random_access_range
Elementtyp Identisch mit dem zugrunde liegenden Bereich
Iteratorkategorie anzeigen Identisch mit dem zugrunde liegenden Bereich
Größer eingestellt Nur, wenn der zugrunde liegende Bereich erfüllt ist sized_range
Ist const-iterierbar Nur, wenn der zugrunde liegende Bereich ein common_view und erfüllt const-iterable
Allgemeiner Bereich Ja
Geliehener Bereich Nur, wenn der zugrunde liegende Bereich erfüllt ist borrowed_range

Member

Memberfunktionen Beschreibung
Konstruktoren C++20 Erstellen Sie ein reverse_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 .reverse_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 reverse_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 reverse_view Datei nicht leer ist.

Anforderungen

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

Namespace:std::ranges

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

Konstruktoren

Erstellen Sie eine Instanz einer reverse_view aus einer bidirektionalen Ansicht.

1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)

Parameter

rg
Die Ansicht, die eine umgekehrte Ansicht bereitstellt.

Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.

Rückgabewert

Eine Ansicht des zugrunde liegenden Bereichs in umgekehrter Reihenfolge.

Hinweise

Die beste Methode zum Erstellen eines Steuerelements reverse_view ist die Verwendung des views::reverse 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) Der Standardkonstruktor initialisiert standardmäßig ein reverse_view.
2) Erstellen Sie eine reverse_view aus der angegebenen Ansicht.

Beispiel: reverse_view

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

int main()
{
    std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
    auto rv = v | std::views::reverse;
    
    for (auto e : rv) // 6 5 -4 3 2 1 0
    {
        std::cout << e << ' ';
    }
}
6 5 -4 3 2 1 0

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

1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;

Parameter

Keine

Rückgabewert

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

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

Hinweise

Nach dem ersten Aufruf begin()werden nachfolgende Aufrufe in konstanter Zeit ausgeführt, O(1), unabhängig davon, wie viele Elemente sich in der reverse_view. Dies hat Auswirkungen, da reverse_view der Wert last zwischengespeichert wird, damit er sie wiederholt beginzurückgeben kann. Dies bedeutet, dass Sie eine Ansicht nicht wiederverwenden sollten, nachdem der zugrunde liegende Container geändert wurde. Wenn der zugrunde liegende Bereich geändert wird, generieren Sie eine neue Ansicht, die kostengünstig ist.

2) Die zugrunde liegende Ansicht muss erfüllen common_range, was bedeutet, dass die zugrunde liegende Ansicht denselben Anfangs- und End iteratortyp aufweisen muss.
3) Die zugrunde liegende Ansicht muss für eine Konst-Ansicht genügen common_range , um über ein const reverse_viewElement zu durchlaufen.

end

Abrufen des Sentinels am Ende des reverse_view

1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;

Parameter

Keine

Rückgabewert

Der Sentinel, der auf das letzte Element in der reverse_view.

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

Hinweise

Für 2 muss die zugrunde liegende Ansicht eine Konstansicht erfüllen common_range , was bedeutet, dass die zugrunde liegende Ansicht denselben Anfangs- und End iteratortyp aufweisen muss.

size

Ruft die Anzahl der Elemente ab.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parameter

Keine

Rückgabewert

Die Anzahl der Elemente im reverse_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

<ranges>
reverse Range Adaptor
Anzeigen von Klassen