std::ranges::join_with_view<V,Pattern>:: iterator
|
template
<
bool
Const
>
class /*iterator*/ |
( solo para exposición* ) | |
ranges::
join_with_view
<
V, Pattern
>
::
iterator
es el tipo de los iteradores devueltos por
begin()
y
end()
de
ranges::
join_with_view
<
V, Pattern
>
.
El estado de un iterador de esta clase se gestiona como si hubiera dos iteradores anidados:
-
un
iterador externo
hacia el rango padre
*
parent_
-
-
Si
Basemodelaforward_range, esouter_it_. -
De lo contrario, es
parent_ - >outer_it_.
-
Si
-
un
iterador interno
inner_it_dentro del rango de patrónparent_ - >pattern_o dentro de un rango hijo del rango padre
Esta clase iteradora tiene el invariante de que el iterador interno siempre es dereferenciable a menos que el iterador externo no sea dereferenciable. Cuando un iterador se construye, incrementa o decrementa, su iterador externo podría ajustarse para mantener el invariante.
Contenidos |
Parámetros de plantilla
| Const | - | si el iterador es un iterador constante |
Tipos anidados
Tipos solo de exposición |
|
| Tipo | Definición |
Parent
|
maybe-const
<
Const,
ranges::
join_with_view
<
V, Pattern
>>
( tipo miembro solo de exposición* ) |
Base
|
maybe-const
<
Const, V
>
( tipo miembro solo de exposición* ) |
InnerBase
|
ranges::
range_reference_t
<
Base
>
( tipo miembro solo de exposición* ) |
PatternBase
|
maybe-const
<
Const, Pattern
>
( tipo miembro solo de exposición* ) |
OuterIter
|
ranges::
iterator_t
<
Base
>
( tipo miembro solo de exposición* ) |
InnerIter
|
ranges::
iterator_t
<
InnerBase
>
( tipo miembro solo de exposición* ) |
PatternIter
|
ranges::
iterator_t
<
PatternBase
>
( tipo miembro solo de exposición* ) |
Tipos de propiedades del iterador |
|
| Tipo | Definición |
iterator_concept
|
una etiqueta de iterador , ver abajo |
iterator_category
(condicionalmente presente) |
una etiqueta de iterador, ver abajo |
value_type
|
std::
common_type_t
<
ranges::
range_value_t
<
|
difference_type
|
std::
common_type_t
<
ranges::
range_difference_t
<
|
Determinando el concepto de iterador
iterator_concept
se define de la siguiente manera:
-
Si se satisfacen todas las siguientes condiciones,
iterator_conceptdenota std::bidirectional_iterator_tag :-
std::
is_reference_v
<
InnerBase > es true . -
Basemodelabidirectional_range. -
InnerBaseyPatternBasemodelan cada unocommon_range.
-
std::
is_reference_v
<
-
De lo contrario, si se satisfacen todas las siguientes condiciones,
iterator_conceptdenota std::forward_iterator_tag :-
std::
is_reference_v
<
InnerBase > es true . -
BaseyInnerBasemodelan cada unoforward_range.
-
std::
is_reference_v
<
-
De lo contrario,
iterator_conceptdenota std::input_iterator_tag .
Determinación de la categoría del iterador
Dados los siguientes tipos:
-
Sea
OuterCcomo std:: iterator_traits <OuterIter > :: iterator_category . -
Sea
InnerCcomo std:: iterator_traits <InnerIter > :: iterator_category . -
Sea
PatternCcomo std:: iterator_traits <PatternIter > :: iterator_category .
iterator_category
se define si y solo si
std::
is_reference_v
<
InnerBase
>
es
true
, y
Base
y
InnerBase
modelan cada uno
forward_range
. En este caso, se define de la siguiente manera:
-
Si
std::
is_reference_v
<
std::
common_reference_t
<
ranges::
range_reference_t
<
InnerBase > ,
ranges:: range_reference_t <PatternBase >> es false ,iterator_categorydenota std::input_iterator_tag . -
En caso contrario, si se satisfacen todas las siguientes condiciones,
iterator_categorydenota std::bidirectional_iterator_tag :-
OuterC,InnerC, yPatternCmodelan cada uno std:: derived_from < std:: bidirectional_iterator_tag > . -
InnerBaseyPatternBasemodelan cada unocommon_range.
-
-
En caso contrario, si
OuterC,InnerC, yPatternCmodelan cada uno std:: derived_from < std:: forward_iterator_tag > ,iterator_categorydenota std::forward_iterator_tag . -
En caso contrario,
iterator_categorydenota std::input_iterator_tag .
Miembros de datos
| Miembro | Descripción |
Parent
*
parent_
|
el puntero al padre
join_with_view
( objeto miembro solo para exposición* ) |
OuterIter
outer_it_
(presente solo si
Base
modela
forward_range
)
|
el iterador externo
( objeto miembro solo para exposición* ) |
std::
variant
<
PatternIter
,
InnerIter
>
inner_it_
|
el iterador interno
( objeto miembro solo para exposición* ) |
Funciones miembro
|
construye un iterador
(función miembro pública) |
|
|
accede al elemento
(función miembro pública) |
|
|
avanza o decrementa el iterador subyacente
(función miembro pública) |
Funciones no miembro
|
(C++23)
|
compara los iteradores subyacentes
(función) |
|
(C++23)
|
convierte el resultado de desreferenciar el iterador subyacente a su tipo de referencia de valor asociado
(función) |
|
(C++23)
|
intercambia los objetos apuntados por dos iteradores subyacentes
(función) |