Vectors (Vectores)‏ Agustín J. González ELO329.

Slides:



Advertisements
Presentaciones similares
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Advertisements

Vectors (Vectores) Agustin J. González ELO329. Contenidos Qué es un vector? Declaración de Objetos Vectores Inserción y eliminación de items Uso de sub-índices.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Herramientas de polimorfismo y herencia en C++
Manejo de Punteros y objetos en memoria dinámica en C++
Programación Orientada Objetos
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.
Copyright Kip Irvine 2001, all rights reserved. Vectors (Vectores) Agustin J. González Versión Original de Kip Irvine ELO329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
Copyright Kip Irvine 2001, all rights reserved. Vectors (Vectores) Agustin J. González Versión Original de Kip Irvine ELO329.
1 Clase Lista C++ Estándar Agustín J. González ElO329.
1 Definición y Conversión de datos Agustín J. González ELO-329.
1 Clase Lista C++ Estándar Agustín J. González Versión original de Kip Irvine ElO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
GENERICIDAD Es una propiedad que permite definir una clase o función sin especificar el tipo de datos de uno o mas de sus parámetros (Módulos Parametrizados).
Nociones básicas sobre C++
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Polimorfismo en C++, ligado dinámico y Métodos Virtuales
Polimorfismo y Funciones Virtuales
Clase Lista C++ Estándar
Colecciones Carlos Fontela, 2008.
Polimorfismo y Métodos Virtuales
Manejo de Punteros y objetos en memoria dinámica en C++
Clase Lista C++ Estándar
Clase Lista C++ Estándar
Definición y Conversión de datos
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Manejo de Excepciones Agustín J. González ELO329.
Vectors (Vectores)‏ e Iteradores
Vectors (Vectores)‏ Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Manejo de Punteros y objetos en memoria dinámica en C++
Polimorfismo y Métodos Virtuales
Herencia Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Vectors (Vectores)‏ e Iteradores
Clase Lista C++ Estándar
Vectores Universidad de Puerto Rico en Humacao
Plantillas (Templates)‏
Algunas Características de C++ no presentes en C
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Herencia en C++ Agustín J. González ELO329.
Vectores (Vector) Agustín J. González ELO320 ELO320.
Manejo de Punteros y objetos en memoria dinámica en C++
Vectors (Vectores)‏ Agustín J. González ELO329.
Algunas Características de C++ no presentes en C
Templates (en español: Pantillas, modelos, patrones)‏
Manejo de Punteros y objetos en memoria dinámica en C++
Manejo de Excepciones en C++
Manejo de Punteros y objetos en memoria dinámica en C++
Clase Lista C++ Estándar
Manejo de Punteros y objetos en memoria dinámica en C++
Herencia en C++ Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Asignación Dinámica de Memoria
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Algunas Características de C++ no presentes en C
Polimorfismo en C++ y Métodos Virtuales
Templates (en español: Pantillas, modelos, patrones)‏
Herencia Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Herencia en C++ Agustín J. González ELO329.
Transcripción de la presentación:

Vectors (Vectores)‏ Agustín J. González ELO329

Diseño y Programación Orientados a Objetos ¿Qué es un vector? De la biblioteca de plantillas estándares de C++ (standard template library) (STL): Un vector es una secuencia que soporta accesos aleatorios a elementos, posee tiempo constante en inserción y eliminación de elementos de los extremos, y tiempo lineal en inserciones y eliminaciones de elementos al comienzo o en el medio. El número de elementos en un vector puede variar dinámicamente; administración de memoria es automática. El vector es la clase contenedora más simple de la STL y en muchos casos la más eficiente. Diseño y Programación Orientados a Objetos

Interfaz de Plantilla Vector (Ver web) Diseño y Programación Orientados a Objetos

Algoritmos Estándares útiles en Vectores Encontrar un valor único Contar el número de coincidencias Recolectar todos los valores coincidentes Remover un elemento Insertar un elemento Diseño y Programación Orientados a Objetos

Diseño y Programación Orientados a Objetos Algoritmos Genéricos ya implementa dos en la STL Pueden ser usados con vectores y otros contenedor es de la STL (Ver WEB) Diseño y Programación Orientados a Objetos

Algoritmos Genéricos ya implementados en la STL (continuación) Diseño y Programación Orientados a Objetos

Diseño y Programación Orientados a Objetos Ordenar un Vector Asumir que el vector contiene ítems cuyos tipos/clases es predefinido en C++ La función sort() pertenece a la biblioteca <algorithm> begin() apunta al primer elemento, y end() apunta al posición siguiente al último elemento #include <algorithm> vector<int> items; // otras operaciones sort( items.begin(), items.end()); Diseño y Programación Orientados a Objetos

Iteradores (Iterators)‏ Un iterador es un puntero a un elemento de un vector que puede movido hacia delante o hacia atrás a través de los elementos del vector. Desreferenciamos un iterador para acceder los elementos que este apunta. (* = operador de desreferencia o “valor apuntado por”)‏ vector<int> items; vector<int>::iterator I; I = items.begin(); // first number cout << *I << endl; // display the number Diseño y Programación Orientados a Objetos

Ordenamiento Usando Iteradores Podemos pasar iteradores a la función srt()‏ #include <algorithm> vector<int> items; vector<int>::iterator I1; vector<int>::iterator I2; I1 = items.begin(); I2 = items.end(); sort( I1, I2 ); Diseño y Programación Orientados a Objetos

Sort sobre Tipos definidos por el usuario Ordenar un vector que contenga elementos de nuestra clase es levemente más avanzado Debemos sobrecargar el operador < en nuestra clase vector<Student> cop3337; sort( cop3337.begin(), cop3337.end()); Diseño y Programación Orientados a Objetos

Sobrecarga del Operador < class Student { public: bool operator <(const Student & S2)‏ { return m_sID < S2.m_sID; } private: string m_sID; string m_sLastName; }; Diseño y Programación Orientados a Objetos

Operaciones comunes con vectores vector<int> items; // Reverse the order reverse( items.begin(), items.end()); // Randomly shuffle the order random_shuffle( items.begin(), items.end()); // Accumulate the sum #include <numeric> int sum = accumulate( items.begin(), items.end(), 0 ); Diseño y Programación Orientados a Objetos

Encontrar/Remover el valor más pequeño vector<int> items; vector<int>::iterator I; // find lowest value I = min_element(items.begin(),items.end()); // erase item pointed to by iterator I items.erase( I ); Diseño y Programación Orientados a Objetos