Spec-Zone.ru › C++

std::ranges::join_view<V>::iterator

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

Тип возвращаемого значения join_view::begin, и join_view::end, когда внешний диапазон V и внутренний диапазон ranges::range_reference_t<V> удовлетворяют common_range, а родительский диапазон join_view является forward_range.

Если V не является простым представлением (например, если ranges::iterator_t<const V> недействителен или отличается от ranges::iterator_t<V>), то Const является истинным для итераторов, возвращаемых из константных перегрузок, и ложным в противном случае. Если V является простым представлением, Const является истинным тогда и только тогда, когда ranges::range_reference_t<V> является ссылкой.

Типы членов

Тип члена Определение
Parent const join_view<V> если Const является true, в противном случае join_view<V>
(только для иллюстрации*)
Base const V если Const является true, в противном случае V
(только для иллюстрации*)
OuterIter ranges::iterator_t<Base>
(только для иллюстрации*)
InnerIter ranges::iterator_t<ranges::range_reference_t<Base>>
(только для иллюстрации*)
iterator_concept
  • std::bidirectional_iterator_tag, если ranges::range_reference_t<Base> является типом ссылки, и Base и ranges::range_reference_t<Base> каждый моделируют bidirectional_range;
  • std::forward_iterator_tag, если ranges::range_reference_t<Base> является типом ссылки, и Base и ranges::range_reference_t<Base> каждый моделируют forward_range;
  • std::input_iterator_tag в противном случае.
iterator_category Определено только если iterator::iterator_concept (см. выше) обозначает std::forward_iterator_tag.

Пусть OUTERC будет std::iterator_traits<ranges::iterator_t<Base>>::iterator_category, и пусть INNERC будет std::iterator_traits<ranges::iterator_t<ranges::range_reference_t<Base>>>::iterator_category.

  • std::bidirectional_iterator_tag, если OUTERC и INNERC каждый моделируют std::derived_from<std::bidirectional_iterator_tag>;
  • std::forward_iterator_tag, если OUTERC и INNERC каждый моделируют std::derived_from<std::forward_iterator_tag>;
  • std::input_iterator_tag в противном случае.
value_type ranges::range_value_t<ranges::range_reference_t<Base>>
difference_type

std::common_type_t<ranges::range_difference_t<Base>,
ranges::range_difference_t<ranges::range_reference_t<Base>>>

Объекты-члены

Название члена Определение
outer_ (приватный) Объект типа OuterIter
(только для иллюстрации*)
inner_ (приватный) Объект типа InnerIter
(только для иллюстрации*)
parent_ (приватный) Объект типа Parent
(только для иллюстрации*)

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

(конструктор)
(C++20)
создаёт итератор
(общедоступная функция-член)
operator*operator->
(C++20)
доступ к элементу
(общедоступная функция-член)
operator++operator++(int)operator--operator--(int)
(C++20)
перемещает или уменьшает подлежащие итераторы
(общедоступная функция-член)
satisfy
(C++20)
пропускает пустые внутренние диапазоны
(только для иллюстрации*)

Функции вне класса

operator==
(C++20)
сравнивает подлежащие итераторы
(функция)
iter_move
(C++20)
преобразует результат обращений к подлежащему итератору к связанному типу ссылочного значения
(функция)
iter_swap
(C++20)
меняет местами объекты, на которые указывают два подлежащих итератора
(функция)

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

Spec-Zone.ru

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