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 . |
base C++20 |
Rufen Sie den zugrunde liegenden Bereich ab. |
begin C++20 |
Rufen Sie einen Iterator zum ersten Element ab. |
end C++20 |
Rufen Sie den Sentinel am Ende der .reverse_view |
size C++20 |
Ruft die Anzahl der Elemente ab. |
Geerbt von view_interface |
Beschreibung |
back C++20 |
Rufen Sie das letzte Element ab. |
empty C++20 |
Testen Sie, ob die Datei reverse_view leer ist. |
front C++20 |
Rufen Sie das erste Element ab. |
operator[] C++20 |
Rufen Sie das Element an der angegebenen Position ab. |
operator bool C++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
.
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 begin
zurü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_view
Element 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
.
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_range
oder mit anderen Worten begrenzt ist.