La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.

Presentaciones similares


Presentación del tema: "Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador."— Transcripción de la presentación:

1 Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador Contenedores e Iteradores Iteradores: Interfaz general

2 Laboratorio Análisis y Diseño de Algoritmos 2 Motivación Consideremos la forma en la que se suele diseñar el acceso a los elementos de una lista: template class Lista {... void iniciarCursor(); Elem * devolverActual(); void avanzarCursor(); bool esFinal();... };

3 Laboratorio Análisis y Diseño de Algoritmos 2 Ejemplo: Lista + Iterador #include using namespace std; int main (int argc, char * argv[]) { // Instanciamos una lista de enteros list lista;...

4 Laboratorio Análisis y Diseño de Algoritmos 2 Ejemplo: Lista + Iterador (continuación de la función main)‏... // Cargamos la lista insertando al final int n; cin >> n; while (n > 0) { lista.push_back(n); // Agregar al final de la lista cin >> n; } ordenar(lista);...

5 Laboratorio Análisis y Diseño de Algoritmos 2 Ejemplo: Lista + Iterador (continuación de la función main)‏... // Mostramos el contenido de la lista // Primero instanciamos e inicializamos un iterador list ::iterator i = lista.begin(); while (i != lista.end()) { cout << *i << " "; // Mostramos el contenido del elemento referenciado i++; // Avanzamos el iterador } return 0; }

6 Laboratorio Análisis y Diseño de Algoritmos 2 Ejemplo: Lista + Iterador // Ordenamiento creciente por selección void ordenar(list & l) { list ::iterator menor, i;// Vamos a usar dos iteradores menor = l.begin(); // “menor” va a recorrer todas las posiciones de la lista while (menor != l.end()) { i = menor; // “i” recorre todos los elementos desordenados a partir de “menor” while (i != l.end()) { if (*i < *menor) { int tmp = *menor; *menor = *i; *i = tmp; } i++; } menor++; }

7 Laboratorio Análisis y Diseño de Algoritmos 2 Contenedores e Iteradores Un contenedor es un objeto cuya función es almacenar otros objetos, y provee métodos para acceder a sus elementos. Los contenedores son de dos tipos:  Secuenciales: acomodan los elementos en forma lineal. Permiten operaciones de inserción y borrado en posiciones específicas. Por ejemplo: vector, list  Asociativos: cuyas operaciones sobre los elementos están basadas en claves. Hay dos tipos: Asociativos Simples: los elementos almacenados son las mismas claves. Por ejemplo: set, multiset Asociativos por Pares: se relaciona o asocia una clave con otro elemento. Por ejemplo: map, multimap Cada tipo de contenedor tiene un tipo de iterador asociado.

8 Laboratorio Análisis y Diseño de Algoritmos 2 Iteradores: Interfaz general Definición  TipoContenedor::iterator nombreIterador; Por ejemplo: set ::iterator it; list >::iterator it; Utilización  Avanzar iterador al siguiente elemento: it++  Acceder al valor de un elemento: *it  También es válido it->atributo y it->método()‏

9 Laboratorio Análisis y Diseño de Algoritmos 2 Iteradores: Interfaz general Utilización (continuación)‏  Inicializar iterador: it = contenedor.begin();  Cosultar si un iterador llegó al final de la secuencia: if (i != contenedor.end()) { // El iterador referencia un elemento válido } else { // El iterador llegó al final }

10 Laboratorio Análisis y Diseño de Algoritmos 2 Enlaces Standard Template Library (STL) C++  Documentación (se puede descargar)‏ http://www.sgi.com/tech/stl


Descargar ppt "Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador."

Presentaciones similares


Anuncios Google