Sdílet prostřednictvím


ref_view class (standardní knihovna jazyka C++)

Zobrazení, které odkazuje na prvky, které patří do jiné oblasti.

Syntaxe

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

Parametry šablony

R
Oblast, na která se má odkazovat.

Členové

Členské funkce Popis
KonstruktoryC++20 Vytvoření .ref_view
baseC++20 Získejte odkaz na podkladovou oblast.
beginC++20 Získejte iterátor k prvnímu prvku.
dataC++20 Získejte ukazatel na první prvek v odkazované oblasti.
emptyC++20 Otestujte, jestli je tato ref_view hodnota prázdná.
endC++20 Získejte sentinel na konci tohoto ref_view.
sizeC++20 Získá počet prvků. Základní rozsah musí splňovat sized_range.
Zděděno z view_interface Popis
backC++20 Získejte poslední prvek.
frontC++20 Získejte první prvek.
operator[]C++20 Získejte prvek na zadané pozici.
operator boolC++20 Otestujte, jestli tato ref_view možnost není prázdná.

Zobrazení charakteristik

Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.

Charakteristika Popis
Adaptér rozsahu views::all nebo views::common
Podkladová oblast Musí input_range
Typ elementu Stejné jako podkladová oblast
Zobrazit kategorii iterátoru Stejné jako podkladová oblast
Tříděný Pouze v případě, že základní rozsah splňuje požadavky sized_range
Je const-iterable Ano
Společný rozsah Pouze v případě, že základní rozsah splňuje požadavky common_range
Zapůjčený rozsah Ano

Požadavky

Hlavička: <ranges> (od C++20)

Obor názvů: std::ranges

Je vyžadována možnost kompilátoru: /std:c++20 nebo novější.

Konstruktory

Vytvoření instance objektu ref_view

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

Parametry

rg
Oblast, na která se má odkazovat.

Informace o typu parametru šablony naleznete v tématu Parametry šablony.

Vrácená hodnota

Instance ref_view .

Poznámky

Nejlepší způsob, jak vytvořit, ref_view je použití adaptéru rozsahu views::all . Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.

Funkce A ref_view je užitečná při převodu kontejneru na zobrazení. Můžete například použít ref_view k převodu vector na zobrazení, což zlevňuje předávání prvků vektoru kolem.

Příklad: 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

Získá kopii podkladové oblasti.

constexpr R& base() const;

Parametry

Žádná

Vrácená hodnota

Podkladová oblast.

begin

Získejte iterátor na první prvek v objektu ref_view.

constexpr iterator_t<R> begin() const;

Parametry

Žádná

Vrácená hodnota

Iterátor ukazující na první prvek v tomto ref_viewprvku .

Obrázek vektoru s prvky 10, 20 a 30 První prvek obsahuje hodnotu 10 a je označen jako begin(). Poslední prvek obsahuje hodnotu 30 a je označený jako

data

Získejte ukazatel na první prvek v tomto ref_viewsouboru . Prvky v oblasti musí být souvislé.

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

Parametry

Žádná

Vrácená hodnota

Ukazatel na první prvek.

empty

Otestujte, jestli je tato ref_view hodnota prázdná.

constexpr bool empty() const

Parametry

Žádná

Vrácená hodnota

Vrátí true , pokud neobsahuje ref_view žádné prvky. V opačném případě hodnota false.

end

Získejte sentinel na konci tohoto ref_view.

constexpr sentinel_t<R> end() const

Vrácená hodnota

Sentinel, který následuje za posledním prvkem v tomto ref_view:

Obrázek vektoru s prvky 10, 20 a 30 První prvek obsahuje hodnotu 10 a je označen jako begin(). Poslední prvek obsahuje hodnotu 30 a je označený jako

size

Získá počet prvků.

constexpr auto size() const requires sized_range<R>

Parametry

Žádná

Vrácená hodnota

Počet prvků v souboru ref_view.

Viz také

<ranges>
all adaptér rozsahu
zobrazit třídy