Udostępnij za pośrednictwem


ref_view class (Standardowa biblioteka C++)

Widok odwołujący się do elementów należących do innego zakresu.

Składnia

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

Parametry szablonu

R
Zakres do odwołania.

Elementy członkowskie

Funkcje składowe Opis
KonstruktoryC++20 Skonstruuj element ref_view.
baseC++20 Uzyskaj odwołanie do bazowego zakresu.
beginC++20 Pobierz iterator do pierwszego elementu.
dataC++20 Pobierz wskaźnik do pierwszego elementu w odwołanym zakresie.
emptyC++20 Sprawdź, czy jest to ref_view puste.
endC++20 Pobierz element sentinel na końcu tego ref_viewobiektu .
sizeC++20 Pobierz liczbę elementów. Zakres bazowy musi spełniać sized_rangewartość .
Dziedziczone z view_interface Opis
backC++20 Pobierz ostatni element.
frontC++20 Pobierz pierwszy element.
operator[]C++20 Pobierz element na określonej pozycji.
operator boolC++20 Sprawdź, czy nie jest to ref_view puste.

Właściwości widoku

Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)

Characteristic opis
Adapter zakresu views::all lub views::common
Zakres bazowy Musi spełniać wymagania input_range
Typ elementu Taki sam jak zakres bazowy
Wyświetl kategorię iteratora Taki sam jak zakres bazowy
Wielkości Tylko wtedy, gdy zakres bazowy spełnia sized_range
Jest constiterowalne Tak
Wspólny zakres Tylko wtedy, gdy zakres bazowy spełnia common_range
Pożyczony zakres Tak

Wymagania

Nagłówek: <ranges> (od C++20)

Przestrzeń nazw: std::ranges

Opcja kompilatora: /std:c++20 lub nowsza jest wymagana.

Konstruktory

Konstruowanie wystąpienia obiektu ref_view

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

Parametry

rg
Zakres do odwołania.

Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.

Wartość zwracana

ref_view Wystąpienie.

Uwagi

Najlepszym sposobem utworzenia elementu ref_view jest użycie adaptera views::all zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.

Element jest ref_view przydatny do konwertowania kontenera na widok. Na przykład można użyć ref_view polecenia , aby przekonwertować vector element na widok, co sprawia, że niedrogi jest przekazywanie elementów wektora wokół.

Przykład: 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

Pobiera kopię bazowego zakresu.

constexpr R& base() const;

Parametry

Brak.

Wartość zwracana

Zakres bazowy.

begin

Pobierz iterator do pierwszego elementu w pliku ref_view.

constexpr iterator_t<R> begin() const;

Parametry

Brak.

Wartość zwracana

Iterator wskazujący na pierwszy element w tym ref_viewelemecie .

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

data

Pobierz wskaźnik do pierwszego elementu w tym ref_viewelemecie . Elementy w zakresie muszą być ciągłe.

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

Parametry

Brak.

Wartość zwracana

Wskaźnik do pierwszego elementu.

empty

Sprawdź, czy jest to ref_view puste.

constexpr bool empty() const

Parametry

Brak.

Wartość zwracana

Zwraca wartość true , jeśli element ref_view nie zawiera żadnych elementów. W przeciwnym razie wartość false.

end

Pobierz element sentinel na końcu tego ref_viewobiektu .

constexpr sentinel_t<R> end() const

Wartość zwracana

Element sentinel, który jest zgodny z ostatnim elementem w tym ref_viewelemecie :

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

size

Pobierz liczbę elementów.

constexpr auto size() const requires sized_range<R>

Parametry

Brak.

Wartość zwracana

Liczba elementów w elem.ref_view

Zobacz też

<ranges>
all adapter zakresu
klasy widoków