Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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_rangewartość .
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 constiterowalne |
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. |
baseC++20 |
Pobierz zakres bazowy. |
beginC++20 |
Pobierz iterator do pierwszego elementu. |
endC++20 |
Pobierz element sentinel na końcu obiektu reverse_view. |
sizeC++20 |
Pobierz liczbę elementów. |
Dziedziczone z view_interface |
Opis |
backC++20 |
Pobierz ostatni element. |
emptyC++20 |
Sprawdź, czy element reverse_view jest pusty. |
frontC++20 |
Pobierz pierwszy element. |
operator[]C++20 |
Pobierz element na określonej pozycji. |
operator boolC++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_viewelement .
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 beginelementu . 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_rangewartość , 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.