join_view
class (стандартная библиотека C++)
Объединяет элементы диапазона диапазонов в одно представление.
Синтаксис
template<input_range R> requires view<R> && input_range<range_reference_t<R>> &&
(is_reference_v<range_reference_t<R>> || view<range_value_t<R>>)
class join_view : public view_interface<join_view<R>>;
Параметры шаблона
R
Тип базового диапазона. Должен удовлетворять input_range
или выше.
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
Characteristic | Description |
---|---|
Адаптер диапазона | views::join |
Базовый диапазон | Должно соответствовать input_range или выше |
Тип элемента | Совпадает с базовым диапазоном |
Просмотр категории итератора | input_range вплоть до bidirectional_range итерации базового диапазона |
Размер | No |
Is const -iterable |
Только в том случае, если базовый диапазон является const итерируемым |
Общий диапазон | Только если базовый диапазон удовлетворяет common_range |
Заимствуемый диапазон | No |
Участники
Функции-члены | Description |
---|---|
КонструкторыC++20 | join_view Создание . |
base C++20 |
Получите ссылку на базовый диапазон. |
begin C++20 |
Получите итератор к первому элементу. |
end C++20 |
Получите sentinel в конце представления. |
Наследуется от view_interface |
Description |
back C++20 |
Получите последний элемент. |
empty C++20 |
Проверьте, является ли представление пустым. |
front C++20 |
Получите первый элемент. |
operator bool C++20 |
Проверьте, не является ли представление пустым. |
Замечания
Лучший способ создания join_view
— использовать views::join
адаптер диапазона. Адаптеры диапазона — это способ доступа к классам представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.
Это представление полезно, если требуется объединить несколько диапазонов в одно представление.
Требования
Заголовок: <ranges>
(с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20
или более поздней версии требуется.
Конструкторы
Создайте экземпляр join_view
.
1) join_view() = default;
2) constexpr explicit join_view(R base)
Параметры
base
Базовый диапазон.
Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".
Замечания
1) Конструкция join_view
по умолчанию .
2) Создает из join_view
base
.
Пример: join_view
// requires /std:c++20, or later
#include <iostream>
#include <vector>
#include <ranges>
int main()
{
std::vector<int> rg1{1, 2, 3, 4};
std::vector<int> rg2{5, 6, 7};
std::vector<int> rg3{8, 9, 10, 11, 12, 13};
std::vector<int> rangeOfRanges[] {rg1, rg2, rg3};
auto jv = std::ranges::join_view(rangeOfRanges);
for (auto& e : jv)
{
std::cout << e << " ";
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13
base
Получите базовое представление.
// Uses a copy constructor to return the underlying view
1) constexpr V base() const& requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying view
2) constexpr V base() &&;
Параметры
Нет.
Возвращаемое значение
- Возвращаемое представление создается сконструировано.
- Возвращаемое представление создается.
begin
Получите итератор к первому элементу в представлении.
constexpr auto begin();
constexpr auto begin() const
requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>;
Параметры
Нет.
Возвращаемое значение
Итератор, указывающий на первый элемент в представлении:
end
Получите sentinel в конце представления.
constexpr sentinel_t<R> end();
constexpr auto end() const requires range<const R>
Параметры
Нет.
Возвращаемое значение
Sentinel, следующий за последним элементом в представлении: