Spec-Zone.ru › C++

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

template< bool Const >
class /*iterator*/;
(с C++23)
(только для примера*)

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

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

Типы членов

Тип члена Определение
Parent (private) zip_transform_view, если Const является false, const zip_transform_view в противном случае.
(экспонируемый тип члена*)
Base (private) InnerView, если Const является false, const InnerView в противном случае.
(экспонируемый тип члена*)
iterator_category
(необязательно)

Пусть /*maybe-const*/<Const, F>& обозначает const F& , если Const является true, F& в противном случае.
Пусть /*maybe-const*/<Const, Views> обозначает const Views , если Const является true, Views в противном случае.

Пусть /*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_ (private) Указатель Parent* на родительский объект
(экспонируемый член-объект*)
inner_ (private) Итератор типа ziperator<Const>.
(экспонируемый тип члена*)

Члены-функции

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

Внечленые функции

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/w/cpp/ranges/zip_transform_view/iterator

Spec-Zone.ru

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