Freigeben über


ref_view Klasse (C++-Standardbibliothek)

Eine Ansicht, die auf die Elemente verweist, die zu einem anderen Bereich gehören.

Syntax

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

Vorlagenparameter

R
Der bereich, auf den verwiesen werden soll.

Member

Memberfunktionen Beschreibung
Konstruktoren C++20 Erstellen Sie ein ref_view.
baseC++20 Rufen Sie einen Verweis auf den zugrunde liegenden Bereich ab.
beginC++20 Rufen Sie einen Iterator zum ersten Element ab.
dataC++20 Rufen Sie einen Zeiger auf das erste Element im Bereich ab, auf das verwiesen wird.
emptyC++20 Testen Sie, ob dies ref_view leer ist.
endC++20 Rufen Sie den Sentinel am Ende dieses Vorgangs ref_viewab.
sizeC++20 Ruft die Anzahl der Elemente ab. Der zugrunde liegende Bereich muss erfüllt sein sized_range.
Geerbt von view_interface Beschreibung
backC++20 Rufen Sie das letzte Element ab.
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 dies ref_view nicht leer ist.

Eigenschaften der Ansicht

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

Merkmal Beschreibung
Range Adaptor views::all oder views::common
Zugrunde liegender Bereich Muss zufrieden stellen input_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 Ja
Allgemeiner Bereich Nur, wenn der zugrunde liegende Bereich erfüllt ist common_range
Geliehener Bereich Ja

Anforderungen

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

Namespace:std::ranges

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

Konstruktoren

Erstellen einer Instanz einer ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

Parameter

rg
Der bereich, auf den verwiesen werden soll.

Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.

Rückgabewert

Eine ref_view-Instanz.

Hinweise

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

A ref_view ist nützlich, um einen Container in eine Ansicht zu konvertieren. Beispielsweise können ref_view Sie eine vector Ansicht in eine Ansicht konvertieren, wodurch es kostengünstig ist, die Elemente des Vektors zu übergeben.

Beispiel: ref_view

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

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

Ruft eine Kopie des zugrunde liegenden Bereichs ab.

constexpr R& base() const;

Parameter

Keine

Rückgabewert

Der zugrunde liegende Bereich.

begin

Rufen Sie einen Iterator zum ersten Element in der ref_view.

constexpr iterator_t<R> begin() const;

Parameter

Keine

Rückgabewert

Ein Iterator, der auf das erste Element in diesem ref_viewElement zeigt.

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

data

Rufen Sie einen Zeiger auf das erste Element in diesem ref_viewElement ab. Die Elemente im Bereich müssen zusammenhängend sein.

constexpr auto data() const requires contiguous_range<R>;

Parameter

Keine

Rückgabewert

Ein Zeiger auf das erste Element.

empty

Testen Sie, ob dies ref_view leer ist.

constexpr bool empty() const

Parameter

Keine

Rückgabewert

Gibt zurück true , wenn die ref_view Elemente keine Elemente enthalten. Andernfalls false.

end

Rufen Sie den Sentinel am Ende dieses Vorgangs ref_viewab.

constexpr sentinel_t<R> end() const

Rückgabewert

Der Sentinel, der auf das letzte Element in diesem ref_viewElement 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 ab.

constexpr auto size() const requires sized_range<R>

Parameter

Keine

Rückgabewert

Die Anzahl der Elemente im ref_view.

Siehe auch

<ranges>
all Range Adaptor
Anzeigen von Klassen