common_view Klasse (C++-Standardbibliothek)

Nehmen Sie einen Bereich, der möglicherweise unterschiedliche Iterator- und Sentineltypen aufweist, und erstellen Sie eine Ansicht mit demselben Iterator- und Sentineltyp. Dies ist nützlich für das Aufrufen von STL-Algorithmen, die von Iteratorpaaren angegebene Bereiche akzeptieren.

Syntax

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

Vorlagenparameter

V
Der Typ der zugrunde liegenden Ansicht.

Eigenschaften der Ansicht

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

Merkmal Beschreibung
Range Adaptor views::common
Zugrunde liegender Bereich Muss erfüllen forward_range oder höher
Elementtyp Identisch mit dem zugrunde liegenden Bereich
Iteratorkategorie anzeigen forward_range oder random_access_range wenn der zugrunde liegende Bereich erfüllt random_access_range und sized_range
Größer eingestellt Nur, wenn der zugrunde liegende Bereich erfüllt ist sized_range
Ist const-iterierbar Nur, wenn der zugrunde liegende Bereich iterierbar ist const
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 common_view.
baseC++20 Rufen Sie die zugrunde liegende Ansicht ab.
beginC++20 Rufen Sie einen Iterator zum ersten Element in der Ansicht ab.
endC++20 Rufen Sie den Sentinel am Ende der Ansicht ab.
sizeC++20 Ruft die Anzahl der Elemente in der Ansicht ab.
Geerbt von view_interface Beschreibung
backC++20 Rufen Sie das letzte Element ab.
dataC++20 Rufen Sie einen Zeiger auf das erste Element ab.
emptyC++20 Testen Sie, ob die Ansicht 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 Ansicht nicht leer ist.

Hinweise

Die beste Methode zum Erstellen eines Steuerelements common_view ist die Verwendung des views::common 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.

Diese Ansicht ist nützlich, um einen Bereich mit unterschiedlichen Iterator-/Sentinel-Typen an einen Legacyalgorithmus zu übergeben, der davon ausgeht, dass er identisch ist.

Anforderungen

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

Namespace:std::ranges

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

Konstruktoren

Erstellen Sie eine Instanz von common_view.

1) common_view() = default;
2) constexpr explicit common_view(V v);

Parameter

v
Die zugrunde liegende Ansicht.

Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.

Hinweise

1) Standardkonstrukte des common_view.
2) Erstellt eine common_view aus der zugrunde liegenden Ansicht mithilfe std::move(v)von . Ein Fehler führt dazu, wenn V es sich um einen gemeinsamen Bereich handelt, um Missbrauch zu vermeiden, der sich negativ auf die Leistung auswirkt.

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() &&;

begin

Rufen Sie einen Iterator zum ersten Element ab.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

Rückgabewert

Ein Iterator, der auf das erste Element in der Ansicht zeigt:

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

end

Rufen Sie den Sentinel am Ende der Ansicht ab.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

Rückgabewert

Der Sentinel, der auf das letzte Element in der Ansicht folgt:

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 in der Ansicht 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 in der Ansicht.

Siehe auch

<ranges>
common Range Adaptor
Anzeigen von Klassen