Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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:
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.