Namespaces
Variants

std::ranges::zip_transform_view<F,Views...>::iterator

С ru.cppreference.net
 
 
Библиотека диапазонов
Адапторы диапазонов
 
 
template< bool Const >
class /*iterator*/;
(начиная с C++23)
(только для пояснения*)

Тип итератора возможно const-квалифицированного zip_transform_view, возвращаемый zip_transform_view::begin и в некоторых случаях zip_transform_view::end.

Тип /*iterator*/<true> или /*iterator*/<false> рассматривает базовые представления как const-квалифицированные или не const-квалифицированные соответственно.

Типы-члены

Тип Определение
Parent (закрытый) maybe-const <Const, zip_transform_view>
(Тип-член только для демонстрации*)
Base (закрытый) maybe-const <Const, InnerView>
(Тип-член только для демонстрации*)
iterator_category
(присутствует условно)

Пусть /*POT*/ обозначает набор типов

std::iterator_traits<std::iterator_t<
    /*maybe-const*/<Const, Views>>>::iterator_category...

Если /*Base*/ моделирует forward_range, то iterator_category обозначает:

  • std::input_iterator_tag, если
    std::invoke_result_t</*maybe-const*/<Const, F>&,
        ranges::range_reference_t</*maybe-const*/<Const, Views>>...>
    
не является ссылкой.
  • В противном случае,
  • std::random_access_iterator_tag, если
(std::derived_from</*POT*/, std::random_access_iterator_tag> && ...) является true.
  • В противном случае std::bidirectional_iterator_tag, если
(std::derived_from</*POT*/, std::bidirectional_iterator_tag> && ...) является true.
  • В противном случае std::forward_iterator_tag, если
(std::derived_from</*POT*/, std::forward_iterator_tag> && ...) является true.
  • В противном случае std::input_iterator_tag.

Отсутствует, если /*Base*/ не моделирует forward_range.

iterator_concept /*ziperator*/<Const>::iterator_concept
value_type

Пусть /*RREF*/ будет ranges::range_reference_t<Views>...,
а /*CRREF*/ будет ranges::range_reference_t<const Views>.... Тогда:

  • std::remove_cvref_t<std::invoke_result_t<F&, /*RREF*/>> если Const это false,
  • std::remove_cvref_t<std::invoke_result_t<const F&, /*CRREF*/>> в противном случае.
difference_type range::range_difference_t</*Base*/>

Элементы данных

Элемент Описание
Parent* parent_ (закрытый) указатель на родительский объект
(элемент, предназначенный только для демонстрации*)
ziperator<Const> inner_ (закрытый) итератор
(элемент, предназначенный только для демонстрации*)

Функции-члены

создает итератор
(public member function)
получает результат применения вызываемого объекта к базовым элементам, на которые указывают итераторы
(public member function)
получает результат применения вызываемого объекта к базовым элементам с заданным смещением
(public member function)
перемещает или уменьшает базовый итератор
(public member function)

Функции, не являющиеся членами класса

сравнивает базовые итераторы
(функция)
выполняет арифметические операции над базовыми итераторами
(функция)

Пример