Vectores (Vector) Agustín J. González ELO320 ELO320.

Slides:



Advertisements
Presentaciones similares
SOBRECARGA DE FUNCIONES
Advertisements

Estructuras de Datos Manipulación de la Especificación de la Lista en C++
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Programación orientada a objetos
Manejo de Excepciones Agustín J. González ELO329.
Plantillas (Templates)‏ Agustín J. González ELO-329.
Programación III Clase 06 Funciones.
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 Vectores (Vector) Agustín J. González ELO320.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
1 Algunas ideas básicas de C++ Agustín J. González ELO-320.
ELO3291 Manejo de Excepciones Lectura sugerida de texto en linea: Eckel, Bruce. Thinking About C++, 2nd Edition, Prentice-Hall, Gratis en
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
ELO3291 Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329 ELO329.
IntroducciÓn a los Arreglos (“arrays”) en C++
Polimorfismo y Funciones Virtuales
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
Algunas ideas básicas de C++
Manejo de Punteros y objetos en memoria dinámica en C++
Algunas ideas básicas de C++
Definición y Conversión de datos
Nociones básicas sobre C++
Lenguaje C++ Problemas.
LISTAS..
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)
Diseño y Programación Orientada a Objetos
Asignación Dinámica de Memoria
Manejo de Punteros y objetos en memoria dinámica en C++
Polimorfismo y Métodos Virtuales
Estructuras de datos y algoritmos
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Vectors (Vectores)‏ e Iteradores
Plantillas (Templates)‏
Algunas Características de C++ no presentes en C
Manejo de Excepciones Agustín J. González ELO329.
Estructuras Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que.
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)
Algunas ideas básicas de C++
Vectors (Vectores)‏ Agustín J. González ELO329.
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
Manejo de Excepciones Agustín J. González ELO329 ELO329.
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++
Guía teórica de manejo de estructuras de datos
Manejo de Excepciones en C++
Manejo de Punteros y objetos en memoria dinámica en C++
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Asignación Dinámica de Memoria
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
EUPs que imprima la tabla de multiplicar de 2 al 10
Algunas Características de C++ no presentes en C
Templates (en español: Pantillas, modelos, patrones)‏
Transcripción de la presentación:

Vectores (Vector) Agustín J. González ELO320 ELO320

Plantillas (Templates) Como podemos definir una colección de datos sin comprometer el tipo de datos siendo agrupados? La idea de una template o plantilla es poder parametrizar el tipo de datos que una clase puede contener Se puede pensar un template como una función con parámetro, en donde el parámetro es un tipo de dato. ELO320

Ejemplos: Plantillas (Templates) Ejemplo de Template de una función template <class T> T max(T a, T b) // return the maximum of a and b { if (a < b) return b; return a; } void swap (T & a, T & b) // swap the values held by a and b T temp = a; a = b; b = temp; ELO320

Declaración de tipos basados en templates Para declarar un valor (variable, o mejor objeto) con un tipo template (plantilla), el tipo se indica en paréntesis. vector<int> a(10); vector<double> b(30); vector<string> c(15); ELO320

Operaciones sobre vectores ELO320

Tamaño de un vector El vector mantiene un buffer interno. El tamaño de este buffer permite almacenar al menos tantos elementos como los contenidos en el vector. Los dos tamaños pueden ser accedidos y cambiados a través de llamados a funciones. ELO320

Ejemplo: generador de sentencias Cada sentencia puede ser vista como la combinación de un sujeto un verbo y un complemento. Asignaremos tres vectores inicialmente vacíos para cada uno de estas categorías de datos. vector <string> sujeto, verbo, complemento. Luego ponemos valores. Los vectores se adecuan al tamaño automáticamente. sujeto.push_back(“Paula”); sujeto.push_back(“Gato”); sujeto.push_back(“gente”); sujeto.push_back(“Profe”); verbo.push_back(“come”); verbo.push_back(“pinta”); verbo.push_back(“ayuda”); ELO320

Ejemplo: generador de sentencias complemento.push_back(“ratón”); complemento.push_back(“estudiantes”); complemento.push_back(“cuadros”); Luego podemos formar sentencias con for (int i=0; i < 10; i++) cout << sujeto[rand()%sujeto.size()] << “ “ verbo[rand()%verbo.size()] << “ “ complemento[rand()%complemento.size()]; Una posible salida es: Gato come ratón Paula pinta cuadros Gente come cuadros ... ELO320

Algoritmos genéricos útiles con vectores ELO320

Algoritmos genéricos útiles con vectores (cont) ELO320

Ejemplo: Cuenta de elementos vector<int>::iterator start = aVec.begin(); vector<int>::iterator stop = aVec.end(); if (find(start, stop, 17) != stop) ... // element has been found int counter = 0; count (start, stop, 17, counter); if (counter != 0) ... // element is in collection ELO320

La historia sigue.. Por ejemplo listas ELO320

Resumen (Contenedores) ELO320