<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ía | propiedades | expresiones válidas | |||
---|---|---|---|---|---|
todas las categorías | copia Urbanizable , copy-asignable y destructible | X b (a), | |||
Se pueden incrementar | + + A | ||||
De acceso aleatorio | Bidireccional | Adelante | Entrada | Soporta las comparaciones de igualdad / desigualdad | a == b |
Puede ser desreferenciado como rvalue | * A a-> m | ||||
Salida | Puede ser desreferenciado como lvalue (sólo para tipos mutable iterador ) | * A = t * a + + = t | |||
default-construible | Una 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 iteradores | a <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
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.InputIteratorserá como mínimo de un iterador de entrada .
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