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 . |
base C++20 |
Rufen Sie einen Verweis auf den zugrunde liegenden Bereich ab. |
begin C++20 |
Rufen Sie einen Iterator zum ersten Element ab. |
data C++20 |
Rufen Sie einen Zeiger auf das erste Element im Bereich ab, auf das verwiesen wird. |
empty C++20 |
Testen Sie, ob dies ref_view leer ist. |
end C++20 |
Rufen Sie den Sentinel am Ende dieses Vorgangs ref_view ab. |
size C++20 |
Ruft die Anzahl der Elemente ab. Der zugrunde liegende Bereich muss erfüllt sein sized_range . |
Geerbt von view_interface |
Beschreibung |
back C++20 |
Rufen Sie das letzte Element ab. |
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 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_view
Element zeigt.
data
Rufen Sie einen Zeiger auf das erste Element in diesem ref_view
Element 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_view
ab.
constexpr sentinel_t<R> end() const
Rückgabewert
Der Sentinel, der auf das letzte Element in diesem ref_view
Element 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
.