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 . |
base C++20 |
Uzyskaj odwołanie do bazowego zakresu. |
begin C++20 |
Pobierz iterator do pierwszego elementu. |
data C++20 |
Pobierz wskaźnik do pierwszego elementu w odwołanym zakresie. |
empty C++20 |
Sprawdź, czy jest to ref_view puste. |
end C++20 |
Pobierz element sentinel na końcu tego ref_view obiektu . |
size C++20 |
Pobierz liczbę elementów. Zakres bazowy musi spełniać sized_range wartość . |
Dziedziczone z view_interface |
Opis |
back C++20 |
Pobierz ostatni element. |
front C++20 |
Pobierz pierwszy element. |
operator[] C++20 |
Pobierz element na określonej pozycji. |
operator bool C++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 const iterowalne |
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_view
elemecie .
data
Pobierz wskaźnik do pierwszego elementu w tym ref_view
elemecie . 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_view
obiektu .
constexpr sentinel_t<R> end() const
Wartość zwracana
Element sentinel, który jest zgodny z ostatnim elementem w tym ref_view
elemecie :
size
Pobierz liczbę elementów.
constexpr auto size() const requires sized_range<R>
Parametry
Brak.
Wartość zwracana
Liczba elementów w elem.ref_view