Namespaces
Variants

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

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

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

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

  • внешний итератор в родительский диапазон *parent_
  • внутренний итератор 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)
обменивает объекты, на которые указывают два базовых итератора
(функция)