Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í:
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í.