Iterator
Un iterador es un objeto que, apuntando a algún elemento en una gama de elementos (tales como una matriz o un contenedor ), tiene la capacidad de iterar a través de los elementos de ese rango utilizando un conjunto de operadores (con al menos el incremento ( + + ) y eliminar la referencia ( * .) 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 ( ++ ). Pero son posibles otros tipos de iteradores. Por ejemplo, cada envase tipo (tal como una lista) Tiene una específica iterador tipo diseñado para recorrer 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 soportadas por los iteradores, se clasifican en cinco categorías diferentes:
Categorías de Iterator
Los iteradores se clasifican en cinco categorías en función de la funcionalidad que implementan:
- Entrada – Salida
- Adelante
- Bidireccional
- De acceso aleatorio
categoría | propiedades | expresiones válidas | |||
---|---|---|---|---|---|
todas las categorías | copia Urbanizable , copia asignable y destructible | X b (a); | |||
Puede ser incrementado | ++ Una | ||||
De acceso aleatorio | Bidireccional | Adelante | Entrada | Soporta la igualdad / desigualdad comparaciones | a == b |
Puede ser desreferenciado como rvalue | * Un a-> m | ||||
Salida | Puede ser desreferenciado como lvalue (sólo para tipos de iterador mutables ) | * A = t * a ++ = t | |||
-default construible | X a; X () | ||||
Multi-pass: ni eliminación de referencias ni todo incremento afecta dereferenceability | {B = a; * A ++; * B; } | ||||
Se puede disminuir | --un un-- * un-- | ||||
Soporta los operadores aritméticos + y - | a + n + n un a - n a - b | ||||
Soporta comparaciones de desigualdad ( < , > , <= y > = ) entre iteradores | <b a> b a <= b a> = b | ||||
Soporta operaciones de asignación compuestos + = y - = | a + = n a - = n | ||||
Soporta compensar desreferenciar operador ( [] ) | 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 de iterador, y n es un valor entero.
Ejemplos
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
vector<char> v;
for (int x = 'A'; x <= 'Z'; x++)
v.push_back(x);
// obtenemos un iterator del tipo char
vector<char>::iterator it;
// lectura y despliegue de datos
cout << "\ndesplegando datos" << endl;
for( it = v.begin(); it != v.end(); it++ )
cout << *it << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
No hay comentarios.:
Publicar un comentario