Поделиться через


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Создание .
baseC++20 Получите ссылку на базовый диапазон.
beginC++20 Получите итератор к первому элементу.
endC++20 Получите sentinel в конце представления.
Наследуется от view_interface Description
backC++20 Получите последний элемент.
emptyC++20 Проверьте, является ли представление пустым.
frontC++20 Получите первый элемент.
operator boolC++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() &&;

Параметры

Нет.

Возвращаемое значение

  1. Возвращаемое представление создается сконструировано.
  2. Возвращаемое представление создается.

begin

Получите итератор к первому элементу в представлении.

constexpr auto begin();
constexpr auto begin() const
    requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>;

Параметры

Нет.

Возвращаемое значение

Итератор, указывающий на первый элемент в представлении:

Изображение вектора с элементами 10, 20 и 30. Первый элемент содержит 10 и помечен как begin(). Последний элемент содержит 30 и помечен как последний элемент. Мнимый прямоугольник после последнего элемента указывает sentinel и обозначает конец().

end

Получите sentinel в конце представления.

constexpr sentinel_t<R> end();
constexpr auto end() const requires range<const R>

Параметры

Нет.

Возвращаемое значение

Sentinel, следующий за последним элементом в представлении:

Изображение вектора с элементами 10, 20 и 30. Первый элемент содержит 10 и помечен как begin(). Последний элемент содержит 30 и помечен как последний элемент. Мнимый прямоугольник после последнего элемента указывает sentinel и обозначает конец().

См. также

join адаптер диапазона
<ranges>
Классы представления