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í prvků oblasti v obráceném pořadí
Syntaxe
template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;
Parametry šablony
V
Typ podkladového zobrazení.
Tento typ musí splňovat ranges::bidirectional_range.
Zobrazení charakteristik
Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.
| Charakteristika | Popis |
|---|---|
| Adaptér rozsahu | views::reverse |
| Podkladová oblast | Musí splňovat bidirectional_range až random_access_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 |
Pouze pokud je podkladová oblast a common_view splňuje ji const-iterable |
| 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í .reverse_view |
baseC++20 |
Získejte podkladovou oblast. |
beginC++20 |
Získejte iterátor k prvnímu prvku. |
endC++20 |
Získejte sentinel na konci reverse_view. |
sizeC++20 |
Získá počet prvků. |
Zděděno z view_interface |
Popis |
backC++20 |
Získejte poslední prvek. |
emptyC++20 |
Otestujte, jestli reverse_view je prázdný. |
frontC++20 |
Získejte první prvek. |
operator[]C++20 |
Získejte prvek na zadané pozici. |
operator boolC++20 |
Otestujte, jestli reverse_view není prázdný. |
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ří instanci objektu reverse_view z obousměrného zobrazení.
1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)
Parametry
rg
Zobrazení pro zobrazení s obráceným zobrazením.
Informace o typu parametru šablony naleznete v tématu Parametry šablony.
Vrácená hodnota
Zobrazení podkladového rozsahu v obráceném pořadí
Poznámky
Nejlepší způsob, jak vytvořit, reverse_view je použití adaptéru rozsahu views::reverse . 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í.
1) Výchozí konstruktor default-initializes a reverse_view.
2) Vytvořte ze reverse_view zadaného zobrazení.
Příklad: reverse_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
auto rv = v | std::views::reverse;
for (auto e : rv) // 6 5 -4 3 2 1 0
{
std::cout << e << ' ';
}
}
6 5 -4 3 2 1 0
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() &&;
Parametry
Žádná
Vrácená hodnota
Podkladové zobrazení.
begin
Získejte iterátor na první prvek v objektu reverse_view.
1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;
Parametry
Žádná
Vrácená hodnota
Iterátor ukazující na první prvek v objektu reverse_view.
Poznámky
Po prvním volání begin(), následné volání běží v konstantním čase, O(1), bez ohledu na to, kolik prvků jsou v reverse_view. To má důsledky, protože reverse_view ukládá hodnotu last do mezipaměti, aby ji bylo možné vrátit opakovaně z begin. To znamená, že byste po úpravě podkladového kontejneru neměli opakovaně používat zobrazení. Pokud je podkladová oblast upravena, vygenerujte nové zobrazení, což je levné.
2) Podkladové zobrazení musí splňovat common_range, což znamená, že podkladové zobrazení musí mít stejný typ začátku a konce iterátoru.
3) Podkladové zobrazení musí splňovat common_range pro zobrazení const pro iteraci přes const reverse_view.
end
Získání sentinelu na konci reverse_view
1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;
Parametry
Žádná
Vrácená hodnota
Sentinel, který následuje za posledním prvkem v objektu reverse_view.
Poznámky
Pro 2 musí podkladové zobrazení vyhovovat common_range zobrazení const, což znamená, že podkladové zobrazení musí mít stejný typ počátečního a koncového iterátoru.
size
Získá počet prvků.
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 souboru reverse_view.
Poznámky
Velikost zobrazení je k dispozici pouze v případě, že je podkladová oblast ohraničená sized_range, nebo jinými slovy.