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 |
base C++20 |
Získejte podkladové zobrazení. |
begin C++20 |
Získejte iterátor k prvnímu prvku v zobrazení. |
end C++20 |
Získejte sentinel na konci zobrazení. |
size C++20 |
Získejte počet prvků v zobrazení. |
Zděděno z view_interface |
Popis |
back C++20 |
Získejte poslední prvek. |
data C++20 |
Získejte ukazatel na první prvek. |
empty C++20 |
Otestujte, jestli je zobrazení prázdné. |
front C++20 |
Získejte první prvek. |
operator[] C++20 |
Získejte prvek na zadané pozici. |
operator bool C++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í:
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í:
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í.