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