Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представление, ссылающееся на элементы, принадлежащие другому диапазону.
Синтаксис
template<std::ranges::range R>
requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;
Параметры шаблона
R
Диапазон для ссылки.
Участники
| Функции-члены | Description |
|---|---|
| КонструкторыC++20 | Создайте ref_view |
baseC++20 |
Получите ссылку на базовый диапазон. |
beginC++20 |
Получите итератор к первому элементу. |
dataC++20 |
Получите указатель на первый элемент в указанном диапазоне. |
emptyC++20 |
Проверьте, является ли это ref_view пустым. |
endC++20 |
Получите sentinel в конце этого ref_view. |
sizeC++20 |
Получение количества элементов. Базовый диапазон должен удовлетворять sized_range. |
Наследуется от view_interface |
Description |
backC++20 |
Получите последний элемент. |
frontC++20 |
Получите первый элемент. |
operator[]C++20 |
Получите элемент в указанной позиции. |
operator boolC++20 |
Проверьте, не является ли это ref_view пустым. |
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
| Characteristic | Description |
|---|---|
| Адаптер диапазона | views::all или views::common |
| Базовый диапазон | Должно удовлетворять input_range |
| Тип элемента | Совпадает с базовым диапазоном |
| Просмотр категории итератора | Совпадает с базовым диапазоном |
| Размер | Только если базовый диапазон удовлетворяет sized_range |
Is const-iterable |
Да |
| Общий диапазон | Только если базовый диапазон удовлетворяет common_range |
| Заимствуемый диапазон | Да |
Требования
Заголовок: <ranges> (с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20 или более поздней версии требуется.
Конструкторы
Создание экземпляра объекта ref_view
// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);
Параметры
rg
Диапазон для ссылки.
Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".
Возвращаемое значение
Экземпляр класса ref_view.
Замечания
Лучший способ создания ref_view — использовать views::all адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.
Это ref_view полезно для преобразования контейнера в представление. Например, можно использовать ref_view для преобразования vector представления, что делает его недорогим для передачи элементов вектора вокруг.
Пример: ref_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = {1,2,3};
auto refView = std::views::all(v);
std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
refView[0] = 10; // modifies v[0]
std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10
base
Возвращает копию базового диапазона.
constexpr R& base() const;
Параметры
Нет.
Возвращаемое значение
Базовый диапазон.
begin
Получите итератор к первому элементу в элементе ref_view.
constexpr iterator_t<R> begin() const;
Параметры
Нет.
Возвращаемое значение
Итератор, указывающий на первый элемент этого ref_viewэлемента.
data
Получите указатель на первый элемент этого ref_viewэлемента. Элементы в диапазоне должны быть смежными.
constexpr auto data() const requires contiguous_range<R>;
Параметры
Нет.
Возвращаемое значение
Указатель на первый элемент.
empty
Проверьте, является ли это ref_view пустым.
constexpr bool empty() const
Параметры
Нет.
Возвращаемое значение
Возвращает, true если элемент ref_view не содержит элементов. В противном случае — false.
end
Получите sentinel в конце этого ref_view.
constexpr sentinel_t<R> end() const
Возвращаемое значение
Sentinel, следующий за последним элементом в этом:ref_view
size
Получение количества элементов.
constexpr auto size() const requires sized_range<R>
Параметры
Нет.
Возвращаемое значение
Число элементов в массиве ref_view.