Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
template < bool Const >
class /*iterator*/
( только для демонстрации* )

ranges:: join_with_view < V, Pattern > :: iterator является типом итераторов, возвращаемых begin() и end() для ranges:: join_with_view < V, Pattern > .

Состояние итератора этого класса управляется так, как если бы существовали два вложенных итератора:

  • внешний итератор в родительском диапазоне * parent_
  • внутренний итератор inner iterator inner_it_ в диапазон шаблона parent_  - > pattern_ или в дочерний диапазон родительского диапазона

Этот класс итератора имеет инвариант, что внутренний итератор всегда разыменовываем, если только внешний итератор не является разыменовываемым. При создании, инкременте или декременте итератора его внешний итератор может быть скорректирован для сохранения инварианта.

Содержание

Параметры шаблона

Const - является ли итератор константным итератором

Вложенные типы

Типы только для экспозиции
Тип Определение
Parent maybe-const  < Const, ranges:: join_with_view < V, Pattern >>
( тип-член только для экспозиции* )
Base maybe-const  < Const, V >
( тип-член только для экспозиции* )
InnerBase ranges:: range_reference_t < Base  >
( тип-член только для экспозиции* )
PatternBase maybe-const  < Const, Pattern >
( тип-член только для экспозиции* )
OuterIter ranges:: iterator_t < Base  >
( тип-член только для экспозиции* )
InnerIter ranges:: iterator_t < InnerBase  >
( тип-член только для экспозиции* )
PatternIter ranges:: iterator_t < PatternBase  >
( тип-член только для экспозиции* )
Типы свойств итератора
Тип Определение
iterator_concept тег итератора, тег итератора , см. ниже
iterator_category
(условно присутствует)
тег итератора, см. ниже
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  >>

Определение концепции итератора

iterator_concept определяется следующим образом:

Определение категории итератора

Даны следующие типы:

iterator_category определяется тогда и только тогда, когда std:: is_reference_v < InnerBase  > равно true , и Base и InnerBase каждый моделирует forward_range . В этом случае оно определяется следующим образом:

Члены данных

Член Описание
Parent  * parent_ указатель на родительский join_with_view
( объект-член только для демонстрации* )
OuterIter outer_it_
(присутствует только если Base моделирует forward_range )
внешний итератор
( объект-член только для демонстрации* )
std:: variant < PatternIter  , InnerIter  > inner_it_ внутренний итератор
( объект-член только для демонстрации* )

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

создает итератор
(публичная функция-член)
обращается к элементу
(публичная функция-член)
продвигает или уменьшает базовый итератор
(публичная функция-член)

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

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