Sdílet prostřednictvím


common_view class (standardní knihovna jazyka C++)

Vezměte rozsah, který může mít různé typy iterátoru a sentinelu, a vytvořte zobrazení se stejným typem iterátoru a sentinelu. To je užitečné pro volání algoritmů STL, které přijímají rozsahy určené páry iterátoru.

Syntaxe

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

Parametry šablony

V
Typ podkladového zobrazení.

Zobrazení charakteristik

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

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

Členové

Členské funkce Popis
KonstruktoryC++20 Vytvoření .common_view
baseC++20 Získejte podkladové zobrazení.
beginC++20 Získejte iterátor k prvnímu prvku v zobrazení.
endC++20 Získejte sentinel na konci zobrazení.
sizeC++20 Získejte počet prvků v zobrazení.
Zděděno z view_interface Popis
backC++20 Získejte poslední prvek.
dataC++20 Získejte ukazatel na první prvek.
emptyC++20 Otestujte, jestli je zobrazení prázdné.
frontC++20 Získejte první prvek.
operator[]C++20 Získejte prvek na zadané pozici.
operator boolC++20 Otestujte, jestli zobrazení není prázdné.

Poznámky

Nejlepší způsob, jak vytvořit, common_view je použití adaptéru rozsahu views::common . 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í.

Toto zobrazení je užitečné pro předávání rozsahu s různými typy iterátoru nebo sentinelu do staršího algoritmu, který očekává, že budou stejné.

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řte instanci objektu common_view.

1) common_view() = default;
2) constexpr explicit common_view(V v);

Parametry

v
Podkladové zobrazení.

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

Poznámky

1) Výchozí konstrukce common_view.
2) Vytvoří common_view z podkladového zobrazení pomocí std::move(v). Pokud je běžný rozsah, který V zabrání zneužití, které by negativně ovlivnilo výkon, dojde k chybě.

base

Získá kopii podkladového zobrazení.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

begin

Získejte iterátor k prvnímu prvku.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

Vrácená hodnota

Iterátor ukazující na první prvek v zobrazení:

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

end

Získejte sentinel na konci zobrazení.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

Vrácená hodnota

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

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ískejte počet prvků v zobrazení.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parametry

Žádná

Vrácená hodnota

Počet prvků v zobrazení.

Viz také

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