0% encontró este documento útil (0 votos)
45 vistas3 páginas

Uso de Iteradores en Estructuras de Datos

Los iteradores permiten recorrer colecciones de manera transparente usando estructuras como "for each". Un iterador oculta la implementación subyacente del recorrido al acceder secuencialmente a los elementos de la colección. Los lenguajes de programación incluyen iteradores para recorrer arreglos y listas de forma simple y consistente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas3 páginas

Uso de Iteradores en Estructuras de Datos

Los iteradores permiten recorrer colecciones de manera transparente usando estructuras como "for each". Un iterador oculta la implementación subyacente del recorrido al acceder secuencialmente a los elementos de la colección. Los lenguajes de programación incluyen iteradores para recorrer arreglos y listas de forma simple y consistente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Iteradores

La idea detrás de los iteredores es el patrón de recorrido de colecciones. Pensemos en las aplicaciones móviles más usa
como un cliente de mensajería, o un cliente de redes sociales y notaremos que su interfaz está compuesta principalmen
listas.
Esta necesidad motiva la implementación de estructuras repetitivas “for each” en los principales lenguajes de programa
cuales nos permiten recorrer diferentes tipos de colecciones como arreglos o listas de manera transparente.

For each
Considerando la siguiente variable de tipo vector:

vector<string> cadenas;

Podemos recorrer esta colección haciendo uso de la estructura “for each”

for (string s : cadenas) {


cout << s << endl;
}

Esta estructura hace lo mismo que la siguiente implementacón usando la estructura repetitiva “for” clásica:

for (int i = 0; i < [Link](); i++) {


string s = cadenas[i];
cout << s << endl;
}

La estructura “for each” hace uso de Iteradores para realizar su trabajo e internamente oculta (a esto se le llama syntax
la siguiente estructura equivalente:

for (vector<string>::iterator it = [Link](); it != [Link](); ++it) {


string s = *it;
cout << s << endl;
}

Diagrama de clase
El código anterior sugiere el siguiente diagrama de clases:
List Node
- nElems - elem
first
+ begin(): Iterator
1 1 1
+ end(): Iterator

1 1
aux next

Iterator
- pos
+ operator++()
1
+ operator !=(): bool
+ operator *(): T

La clase Iterator, demanera similar a Node, una clase embebida pero se diferencia por ser un pública.

Código
class Iterator {
unsigned int pos;
Node* aux;
public:
Iterator(unsigned int pos, Node* aux): pos(pos), aux(aux) {}
void operator ++() { pos++; aux = aux->next; }
bool operator !=(Iterator x) { return pos != [Link]; }
T operator *() { return aux->elem; }
};

Iterator begin() {
return Iterator(0, first);
}

Iterator end() {
return Iterator(nElem, nullptr);
}

Actividad en parejas
Diseñe los diagramas de clases incluyendo iteradores para todos los tipos tipos de lista vistos.
Implemente los iteradores para las listas según indicación del profesor.
Presente y explique su implementación a la clase.
Con ayuda del delegado, compartan todas las implementaciones con toda la clase.

También podría gustarte