Spec-Zone.ru › C++

std::ranges::join_with_view<V,Pattern>::iterator

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

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

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

Типы членов

Тип члена Определение
Parent const join_view<V> если Const истинно, в противном случае join_view<V>
(только для примера, тип члена*)
Base const V если Const истинно, в противном случае V
(только для примера, тип члена*)
InnerBase ranges::range_reference_t<Base>
(только для примера, тип члена*)
PatternBase const Pattern если Const истинно, в противном случае Pattern
(только для примера, тип члена*)
iterator_concept
  • std::bidirectional_iterator_tag, если
    • ranges::range_reference_t<Base> является типом ссылки,
    • Base, InnerBase и PatternBase каждый моделирует bidirectional_range, и
    • InnerBase и PatternBase каждый моделирует common_range;
  • std::forward_iterator_tag, если
    • ranges::range_reference_t<Base> является типом ссылки, и
    • Base и InnerBase каждый моделирует 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<InnerBase>>::iterator_category, и PATTERNC будет std::iterator_traits<ranges::iterator_t<PatternBase>>::iterator_category.

  • std::input_iterator_tag, если std::common_reference_t<ranges::range_reference_t<InnerBase>,
    ranges::range_reference_t<PatternBase>>

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

std::common_type_t<ranges::range_value_t<InnerBase>,
ranges::range_value_t<PatternBase>>

difference_type

std::common_type_t<ranges::range_difference_t<Base>,
ranges::range_difference_t<InnerBase>,
ranges::range_difference_t<PatternBase>>

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

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

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

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

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

Spec-Zone.ru

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