Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представление элементов диапазона в обратном порядке.
Синтаксис
template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;
Параметры шаблона
V
Тип базового представления.
Этот тип должен соответствовать ranges::bidirectional_range.
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
| Characteristic | Description |
|---|---|
| Адаптер диапазона | views::reverse |
| Базовый диапазон | Должно соответствовать bidirectional_range до random_access_range |
| Тип элемента | Совпадает с базовым диапазоном |
| Просмотр категории итератора | Совпадает с базовым диапазоном |
| Размер | Только если базовый диапазон удовлетворяет sized_range |
Is const-iterable |
Только если базовый common_view диапазон является и удовлетворяет const-iterable |
| Общий диапазон | Да |
| Заимствуемый диапазон | Только если базовый диапазон удовлетворяет borrowed_range |
Участники
| Функции-члены | Description |
|---|---|
| КонструкторыC++20 | Создайте reverse_view |
baseC++20 |
Получение базового диапазона. |
beginC++20 |
Получите итератор к первому элементу. |
endC++20 |
Получите sentinel в конце reverse_view. |
sizeC++20 |
Получение количества элементов. |
Наследуется от view_interface |
Description |
backC++20 |
Получите последний элемент. |
emptyC++20 |
Проверьте, является ли пустой reverse_view . |
frontC++20 |
Получите первый элемент. |
operator[]C++20 |
Получите элемент в указанной позиции. |
operator boolC++20 |
Проверьте, не является ли пустой reverse_view . |
Требования
Заголовок: <ranges> (с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20 или более поздней версии требуется.
Конструкторы
Создание экземпляра из reverse_view двунаправленного представления.
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)
Параметры
rg
Представление для предоставления обратного представления.
Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".
Возвращаемое значение
Представление базового диапазона в обратном порядке.
Замечания
Лучший способ создания reverse_view — использовать views::reverse адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.
1) Конструктор по умолчанию инициализирует объект reverse_view.
2) Создание reverse_view из указанного представления.
Пример: 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
Получает копию базового представления.
// 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() &&;
Параметры
Нет.
Возвращаемое значение
Базовое представление.
begin
Получите итератор к первому элементу в элементе 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>;
Параметры
Нет.
Возвращаемое значение
Итератор, указывающий на первый элемент в элементе reverse_view.
Замечания
После первого вызова begin()последующие вызовы выполняются в постоянное время, O(1), независимо от количества элементов.reverse_view Это имеет последствия, так как reverse_view кэширует значение last , поэтому оно может возвращать его многократно из begin. Это означает, что вы не должны повторно использовать представление после изменения базового контейнера. Если базовый диапазон изменен, создайте новое представление, которое является недорогим.
2) Базовое представление должно соответствовать common_range, что означает, что базовое представление должно иметь тот же тип начала и конца итератора.
3) Базовое представление должно удовлетворять common_range для константного представления, чтобы итерировать по объекту const reverse_view.
end
Получение sentinel в конце reverse_view
1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;
Параметры
Нет.
Возвращаемое значение
Sentinel, следующий за последним элементом в элементе reverse_view.
Замечания
Для 2 базовое представление должно соответствовать common_range представлению const, что означает, что базовое представление должно иметь тот же тип начала и конца итератора.
size
Получение количества элементов.
constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;
Параметры
Нет.
Возвращаемое значение
Число элементов в массиве reverse_view.
Замечания
Размер представления доступен только в том случае, если базовый диапазон является sized_rangeограничивающим.