Sdílet prostřednictvím


reverse_view class (standardní knihovna jazyka C++)

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_rangerandom_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.

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

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.

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

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.

Viz také

<ranges>
reverse adaptér rozsahu
Zobrazit třídy