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 |
base C++20 |
Získejte odkaz na podkladovou oblast. |
begin C++20 |
Získejte iterátor k prvnímu prvku. |
data C++20 |
Získejte ukazatel na první prvek v odkazované oblasti. |
empty C++20 |
Otestujte, jestli je tato ref_view hodnota prázdná. |
end C++20 |
Získejte sentinel na konci tohoto ref_view . |
size C++20 |
Získá počet prvků. Základní rozsah musí splňovat sized_range . |
Zděděno z view_interface |
Popis |
back C++20 |
Získejte poslední prvek. |
front C++20 |
Získejte první prvek. |
operator[] C++20 |
Získejte prvek na zadané pozici. |
operator bool C++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_view
prvku .
data
Získejte ukazatel na první prvek v tomto ref_view
souboru . 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
:
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
.