reverse_view
class (Standardowa biblioteka C++)
Widok elementów zakresu w odwrotnej kolejności.
Składnia
template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;
Parametry szablonu
V
Typ widoku bazowego.
Ten typ musi spełniać ranges::bidirectional_range
wartość .
Właściwości widoku
Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)
Characteristic | opis |
---|---|
Adapter zakresu | views::reverse |
Zakres bazowy | Musi spełniać bidirectional_range maksymalnie random_access_range |
Typ elementu | Taki sam jak zakres bazowy |
Wyświetl kategorię iteratora | Taki sam jak zakres bazowy |
Wielkości | Tylko wtedy, gdy zakres bazowy spełnia sized_range |
Jest const iterowalne |
Tylko wtedy, gdy zakres bazowy jest i common_view spełnia const-iterable |
Wspólny zakres | Tak |
Pożyczony zakres | Tylko wtedy, gdy zakres bazowy spełnia borrowed_range |
Elementy członkowskie
Funkcje składowe | Opis |
---|---|
KonstruktoryC++20 | Skonstruuj element reverse_view . |
base C++20 |
Pobierz zakres bazowy. |
begin C++20 |
Pobierz iterator do pierwszego elementu. |
end C++20 |
Pobierz element sentinel na końcu obiektu reverse_view . |
size C++20 |
Pobierz liczbę elementów. |
Dziedziczone z view_interface |
Opis |
back C++20 |
Pobierz ostatni element. |
empty C++20 |
Sprawdź, czy element reverse_view jest pusty. |
front C++20 |
Pobierz pierwszy element. |
operator[] C++20 |
Pobierz element na określonej pozycji. |
operator bool C++20 |
Sprawdź, czy element reverse_view nie jest pusty. |
Wymagania
Nagłówek: <ranges>
(od C++20)
Przestrzeń nazw: std::ranges
Opcja kompilatora: /std:c++20
lub nowsza jest wymagana.
Konstruktory
Konstruowanie wystąpienia obiektu reverse_view
z widoku dwukierunkowego.
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
Widok zapewniający odwrócony widok.
Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.
Wartość zwracana
Widok bazowego zakresu w odwrotnej kolejności.
Uwagi
Najlepszym sposobem utworzenia elementu reverse_view
jest użycie adaptera views::reverse
zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
1) Domyślny konstruktor inicjuje reverse_view
element .
2) Utwórz element reverse_view
z określonego widoku.
Przykład: 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
Pobiera kopię widoku bazowego.
// 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
Brak.
Wartość zwracana
Widok bazowy.
begin
Pobierz iterator do pierwszego elementu w pliku 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
Brak.
Wartość zwracana
Iterator wskazujący pierwszy element w elemecie reverse_view
.
Uwagi
Po pierwszym wywołaniu metody begin()
, kolejne wywołania są uruchamiane w stałym czasie, O(1), niezależnie od liczby elementów w obiekcie reverse_view
. Ma to wpływ na to, że reverse_view
buforuje wartość last
elementu , aby można było go wielokrotnie zwracać z begin
elementu . Oznacza to, że nie należy ponownie używać widoku po zmodyfikowaniu bazowego kontenera. Jeśli zakres bazowy zostanie zmodyfikowany, wygeneruj nowy widok, który jest niedrogi.
2) Widok bazowy musi spełniać common_range
wartość , co oznacza, że widok bazowy musi mieć ten sam typ iteratora początku i końca.
3) Widok bazowy musi spełniać common_range
wymagania dla widoku const, aby iterować w obiekcie const reverse_view
.
end
Pobierz sentinel na końcu reverse_view
1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;
Parametry
Brak.
Wartość zwracana
Sentinel, który jest zgodny z ostatnim elementem w pliku reverse_view
.
Uwagi
W przypadku 2 widok podstawowy musi być spełniony common_range
dla widoku const, co oznacza, że widok podstawowy musi mieć ten sam typ iteratora początku i końca.
size
Pobierz liczbę elementów.
constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;
Parametry
Brak.
Wartość zwracana
Liczba elementów w elem.reverse_view
Uwagi
Rozmiar widoku jest dostępny tylko wtedy, gdy zakres bazowy to sized_range
, lub innymi słowy, ograniczony.