EVAP2

<ITERATOR>

Definiciones Iterator

Un iterador es un objeto que apunta a algún elemento en una serie de elementos (por ejemplo, una matriz o uncontenedor ), tiene la capacidad de recorrer en iteración los elementos de ese rango utilizando un conjunto de operadores (con al menos el incremento ( + + ) y eliminar la referencia ( * .) los operadores) La forma más obvia de iterador es un puntero : Un puntero puede apuntar a elementos de una matriz, y puede recorrer utilizando el operador de incremento ( + + ). Sin embargo, otros tipos de iteradores son posibles. Por ejemplo, cada contenedor de tipo (tal como una

lista) Tiene una específica iterador tipo diseñado para iterar a través de sus elementos. Nótese que mientras que un puntero es una forma de iterador, no todos los iteradores tienen la misma funcionalidad de punteros; Dependiendo de las propiedades admitidas por los iteradores, que se clasifican en cinco categorías diferentes:

CLASIFICACIÓN:

Los iteradores se clasifican en cinco categorías, dependiendo de la funcionalidad que implementan:

De entrada y de salida iteradores son los tipos más limitadas de iteradores: pueden realizar la entrada de un solo paso secuencial o operaciones de salida. Delantero iteradores tienen toda la funcionalidad de los iteradores de entrada y-si no son constantes iteradores - también la funcionalidad de iteradores de salida , aunque que se limitan a una dirección en la que recorrer en iteración un rango (hacia adelante). Todos los contenedores estándarsoportar por lo menos delante tipos iterador. iteradores bidireccionales son como iteradores de avance , pero también puede ser reiterado por atrás. iteradores de acceso aleatorio implementar toda la funcionalidad deiteradores bidireccionales , y también tienen la posibilidad de acceder a rangos no secuencialmente: elementos distantes se puede acceder directamente mediante la aplicación de un valor fijo a un repetidor sin iterar a través de todos los elementos en el medio. . Estos iteradores tienen una funcionalidad similar a los punteros estándar (punteros son iteradores de esta categoría) Las propiedades de cada categoría iterador son:


categoríapropiedadesexpresiones válidas
todas las categoríascopia Urbanizable , copy-asignable y destructibleX b (a),
b = a;
Se pueden incrementar+ + A
+ una +
De acceso aleatorioBidireccionalAdelanteEntradaSoporta las comparaciones de igualdad / desigualdada == b
a! = b
Puede ser desreferenciado como rvalue* A
a-> m
SalidaPuede ser desreferenciado como lvalue
(sólo para tipos mutable iterador )
* A = t
* a + + = t
default-construibleUna X;
X ()
Multi-pass: ni eliminación de referencias ni incremento afecta dereferenceability{B = a; * a + +, * b;}
Se puede disminuir- Un
a -
* a -
Compatible con operadores aritméticos + y -a + n
n + a
a - n
a - b
Soporta las comparaciones de desigualdad ( < , > ,<= y > = ) entre iteradoresa <b
a> b
a <= b
a> = b
Soporta operaciones de asignación compuesto + = y- =a + n =
a - n =
Operador para deshacer referencias Admite desplazamiento ( [] )un [n]

Donde X es un tipo de iterador, un y b son objetos de este tipo iterador, t es un objeto del tipo señalado por el tipo iterador, y n es un valor entero. Para más detalles, ver las referencias de iterador de entrada , de salida de repetidor , adelante iterador , iterador bidireccional y iterador de acceso aleatorio .


FUNCION ADVANCE O AVANZAR
Iterador Avance
Avanza el iterador que por n posiciones de los elementos. Si que es un iterador de acceso aleatorio , la función utiliza sólo una vez operador + o -operador . De lo contrario, la función utiliza repetidamente el aumento o la disminución del operador ( operador + + o operador - ) hasta n elementos se han avanzado.

lo
Iterator ser avanzada.
InputIteratorserá como mínimo de un iterador de entrada .
n
Número de posiciones de los elementos para avanzar.
Esto será lo único negativo de acceso aleatorio y bidireccional iteradores.
Distancia será de un tipo numérico capaz de representar las distancias entre los iteradores de este tipo.

EJEMPLO DE ENTRADA


/ / Antemano ejemplo
# include <iostream>      / / std :: cout
# include <iterator>      / / std :: avance
<list> # include          / / std :: lista

int main () {
  std :: list < int > mylist;
   para ( int i = 0; i <10; i + +) mylist.push_back (i * 10);

  std :: list < int > :: iterator it = mylist.begin ();

  std :: avance (que, 5);

  std :: cout << "El sexto elemento en mylist es:" << * que << '\ n' ;

  devolver 0;
}


Salida:

El sexto elemento en mylist es: 50

No hay comentarios:

Publicar un comentario