C++ named requirements: LegacyRandomAccessIterator
Un LegacyRandomAccessIterator es un LegacyBidirectionalIterator que puede moverse para apuntar a cualquier elemento en tiempo constante.
Si un
LegacyRandomAccessIterator
it
proviene de un
Container
, entonces el
value_type
de
it
es el mismo que el del contenedor, por lo que desreferenciar (
*
it
) obtiene el
value_type
del contenedor.
Un puntero a un elemento de un array satisface todos los requisitos de LegacyRandomAccessIterator .
Contenidos |
Requisitos
El tipo
It
satisface
LegacyRandomAccessIterator
si
-
El tipo
Itsatisface LegacyBidirectionalIterator
Y, dado
-
value_type, el tipo denotado por std:: iterator_traits < It > :: value_type -
difference_type, el tipo denotado por std:: iterator_traits < It > :: difference_type -
reference, el tipo denotado por std:: iterator_traits < It > :: reference -
i
,
a
,
b
, objetos de tipo
Ito const It -
r
, un lvalue de tipo
It -
n
, un entero de tipo
difference_type
Las siguientes expresiones deben ser válidas y tener sus efectos especificados:
| Expresión | Tipo de retorno | Semántica operacional | Notas | ||||
|---|---|---|---|---|---|---|---|
| r + = n |
It&
|
difference_type m
=
n
;
if
(
m
>=
0
)
while
(
m
--
)
++
r
;
|
|
||||
|
a
+
n
n + a |
It
|
It temp
=
a
;
return temp + = n ; |
|
||||
| r - = n |
It&
|
return r + = - n ; |
El valor absoluto de
n
debe estar dentro del rango de valores representables de
difference_type
.
|
||||
| i - n |
It
|
It temp
=
i
;
return temp - = n ; |
|||||
| b - a |
difference_type
|
return
n
;
(ver la precondición) |
Precondición:
Poscondición:
|
||||
| i [ n ] |
convertible a
reference
|
* ( i + n ) | |||||
| a < b |
|
Equivalente a return b - a > 0 ; |
Precondición:
Relación de orden total estricto:
|
||||
| a > b |
|
b < a | Relación de orden total opuesta a a < b | ||||
| a >= b |
|
! ( a < b ) | |||||
| a <= b |
|
! ( a > b ) |
Las reglas anteriores implican que LegacyRandomAccessIterator también implementa LessThanComparable .
Un mutable LegacyRandomAccessIterator es un LegacyRandomAccessIterator que adicionalmente satisface los requisitos de LegacyOutputIterator .
ConceptoPara la definición de std::iterator_traits , se define el siguiente concepto solo para exposición.
donde el concepto solo para exposición
|
(desde C++20) |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
|
LWG 299
( N3066 ) |
C++98 |
el tipo de retorno de
a
[
n
]
era requerido
ser convertible a const value_type & |
el tipo de retorno debe
ser convertible a
reference
|
| LWG 448 | C++98 |
el tipo de retorno de
a
[
n
]
era requerido
ser convertible a
value_type
|
el tipo de retorno debe ser
convertible a const value_type & [1] |
| LWG 1079 | C++98 |
b
-
a
estaba definido usando
a
<
b
,
resultaba en definición circular |
eliminado a < b de la definición |
|
LWG 2114
( P2167R3 ) |
C++98 | la convertibilidad a bool era demasiado débil para reflejar las expectativas de las implementaciones | requisitos fortalecidos |
- ↑ LWG issue 299 se reabrió después de esta resolución.
Véase también
|
(C++20)
|
especifica que un
bidirectional_iterator
es un iterador de acceso aleatorio, que admite avance en tiempo constante y subíndices
(concepto) |
| Biblioteca de iteradores | proporciona definiciones para iteradores, rasgos de iteradores, adaptadores y funciones de utilidad |