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.
Zobrazení bez prvků Toto zobrazení je užitečné pro testovací účely, jako je volání kódu, který je potřeba poskytnout v zobrazení, ale nepotřebuje přístup k podkladovým datům.
Syntaxe
template<class T>
requires std::is_object_v<T>
class empty_view : public ranges::view_interface<empty_view<T>>;
Parametry šablony
T
Typ elementu. I když nejsou žádné prvky v objektu empty_view, všechny rozsahy jsou homogenní. To znamená, že mají prvky určitého typu. Takže i když empty_view nemá žádné prvky, stále má typ, jako empty_view je například , intnebo strings, atd.
Zobrazení charakteristik
Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.
| Charakteristika | Popis |
|---|---|
| Adaptér rozsahu | views::empty |
| Podkladová oblast | Nic |
| Typ elementu | Jak je uvedeno při empty_view vytvoření |
| Zobrazit kategorii iterátoru | contiguous_range |
| Tříděný | Ano. Vždy vrátí hodnotu 0. |
Je const-iterable |
Ano |
| Společný rozsah | Ano |
| Zapůjčený rozsah | Ano |
Členové
| Členské funkce | Popis |
|---|---|
| KonstruktoryC++20 | Vytvoření objektu empty_view. |
beginC++20 |
Vrací objekt nullptr. |
endC++20 |
Vrací objekt nullptr. |
sizeC++20 |
Vrátí hodnotu 0. |
Zděděno z view_interface |
Popis |
backC++20 |
Výsledkem je nedefinované chování. |
dataC++20 |
Vrací objekt nullptr. |
emptyC++20 |
Vrací objekt true. |
frontC++20 |
Výsledkem je nedefinované chování. |
operator[]C++20 |
Výsledkem je nedefinované chování. |
operator boolC++20 |
Vrací objekt false. |
Poznámky
Nejlepší způsob, jak vytvořit, empty_view je použití adaptéru rozsahu empty . 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í.
Vzhledem k tomu, že v žádném empty_viewpřípadě nemůže být žádné prvky , některé optimalizace kompilátoru jsou možné. Kompilátor například odstraní for (auto e : std::views::empty<int>) {...} , protože ví, že neexistuje nic k iteraci.
Dalším použitím je empty_view rozdělení split_view oddělovače s oddělovačem empty_view , což vede k rozsahu oblastí s jedním prvkem.
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 empty_view.
template<class T>
inline constexpr empty_view<T> empty{};
Parametry
T
Typ základního prvku, z něhož neexistuje žádný.
Poznámky
Nejlepší způsob, jak vytvořit, empty_view je použití adaptéru rozsahu empty .
Příklad: empty_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
int main()
{
auto anEmptyView = std::views::empty<int>;
bool isNotEmpty = (bool)anEmptyView;
std::cout << std::boolalpha << isNotEmpty << "\n"; // false
std::cout << std::boolalpha << anEmptyView.empty(); // true
}
false
true
back
Výsledkem je nedefinované chování.
constexpr auto back()
requires ranges::bidirectional_range<T> && ranges::common_range<T>;
constexpr auto back() const
requires ranges::bidirectional_range<const T> && ranges::common_range<const T>;
Parametry
Žádná
Vrácená hodnota
Nezaokrouhlovat.
Poznámky
Volání této funkce v sestavení ladění vyvolá kontrolní výraz, že funkce byla volána na prázdném view_interface.
begin
Vrátí, nullptr protože v zobrazení není první prvek.
static constexpr T* begin() noexcept
Vrácená hodnota
nullptr
data
Vrátí, nullptr protože v zobrazení není první prvek, na který se má ukazatel načíst.
static constexpr T* data() noexcept
Vrácená hodnota
nullptr.
empty
Otestujte, zda je odvozené zobrazení prázdné.
static constexpr bool empty() noexcept
Parametry
Žádná
Vrácená hodnota
Vrací objekt true.
end
Vrátí, nullptr protože v zobrazení nejsou žádné prvky.
static constexpr T* end() noexcept
Vrácená hodnota
nullptr.
front
Výsledkem je nedefinované chování.
constexpr auto front()
requires ranges::forward_range<T>;
constexpr auto front() const
requires ranges::forward_range<const T>;
Parametry
Žádná
Vrácená hodnota
Nezaokrouhlovat.
Poznámky
Volání této funkce v sestavení ladění vyvolá kontrolní výraz, že funkce byla volána na prázdném view_interface.
operator[]
Výsledkem je nedefinované chování.
template<ranges::random_access_range R = T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos);
template<ranges::random_access_range R = const T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos) const;
Parametry
pos
Pozice vzhledem k počáteční iterátoru prvku, který se má vrátit.
Vrácená hodnota
Nezaokrouhlovat.
Poznámky
Volání této funkce v sestavení ladění vyvolá kontrolní výraz, který index je mimo rozsah pro view_interface.
operator bool
Otestujte, jestli odvozené zobrazení není prázdné.
constexpr explicit operator bool()
requires requires { ranges::empty(T ()); };
constexpr explicit operator bool() const
requires requires { ranges::empty(T ()); };
Parametry
Žádná
Vrácená hodnota
Vrací objekt false.
Příklad: (bool)
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
int main()
{
auto anEmptyView = std::views::empty<int>;
if (anEmptyView) // check if anEmptyView isn't empty
{
std::cout << "Error: why does an empty_view have elements?\n";
}
else
{
std::cout << "Correct: an empty_view is not not empty\n";
}
}
Correct: an empty_view is not not empty
size
Získejte počet prvků v zobrazení, které bude vždy 0.
static constexpr size_t size()
Parametry
Žádná
Vrácená hodnota
0.