Namespaces
Variants

std::ranges::transform_view<V,F>::iterator

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

Тип возвращаемого значения transform_view::begin, и transform_view::end когда базовое представление является common_range.

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

Типы элементов

Элемент Определение
Parent (приватный) maybe-const <Const, ranges::transform_view<V, F>>
(тип элемента, доступный только для пояснения*)
Base (приватный) maybe-const <Const, V>
(тип элемента, доступный только для пояснения*)
iterator_concept
  • std::random_access_iterator_tag, если Base моделирует random_access_range,
  • std::bidirectional_iterator_tag, если Base моделирует bidirectional_range,
  • std::forward_iterator_tag, если Base моделирует forward_range,
  • std::input_iterator_tag в противном случае.
iterator_category
(присутствует только если Base моделирует
forward_range)
Пусть MCF будет maybe-const <Const, F>.
  • std::input_iterator_tag, если std::invoke_result_t<MCF&, ranges::range_reference_t<Base>> не является ссылкой.

В противном случае, пусть C будет std::iterator_traits<ranges::iterator_t<Base>>::iterator_category.

  • std::random_access_iterator_tag, если C является std::contiguous_iterator_tag;
  • C, в противном случае.
value_type std::remove_cvref_t<std::invoke_result_t<MCF&, ranges::range_reference_t<Base>>>, где MCF обозначает maybe-const <Const, F>
difference_type ranges::range_difference_t<Base>

Члены-данные

Член Описание
maybe-const <Const, V> current_ (закрытый) итератор
(объект-член только для демонстрации*)
ranges::transform_view* parent_ (закрытый) указатель на родительский объект
(объект-член только для демонстрации*)

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

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

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

сравнивает базовые итераторы
(функция)
выполняет арифметические операции с итераторами
(функция)
(C++20)
получает rvalue-ссылку на преобразованный элемент
(функция)

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
P2259R1 C++20 член iterator_category всегда определен определяется только если Base моделирует forward_range
LWG 3555 C++20 определение iterator_concept игнорирует const изменено для учета
LWG 3798 C++20 iterator_category только input, если результат преобразования - rvalue reference может иметь более сильную категорию