Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porEnrique Franco Sánchez Modificado hace 9 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.