Spec-Zone.ru › C++

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

template< bool Const >
class /*iterator*/;
(начиная с C++23)
(только для иллюстрации*)

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

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

Типы-члены

Тип Определение
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_ (закрытый) итератор
(объект-член, существующий только для иллюстрации*)

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

(конструктор)
создаёт итератор
(открытая функция-член)
operator*
получает результат применения вызываемого объекта к элементам, на которые указывают базовые итераторы
(открытая функция-член)
operator[]
получает результат применения вызываемого объекта к базовым элементам со смещением, заданным аргументом
(открытая функция-член)
operator++operator++(int)operator--operator--(int)operator+=operator-=
перемещает базовый итератор вперёд или назад
(открытая функция-член)

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

operator==operator<=>
(C++23)
сравнивает базовые итераторы
(функция)
operator+operator-
(C++23)
выполняет арифметические операции с базовыми итераторами
(функция)

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/zip_transform_view/iterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API