![Page 1: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/1.jpg)
Vectors (Vectores)
Agustín J. González
ELO329
![Page 2: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/2.jpg)
Diseño y Programación Orientados a Objetos 2
¿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.
![Page 3: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/3.jpg)
Diseño y Programación Orientados a Objetos 3
Interfaz de Plantilla Vector(Ver web)
![Page 4: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/4.jpg)
Diseño y Programación Orientados a Objetos 4
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
![Page 5: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/5.jpg)
Diseño y Programación Orientados a Objetos 5
Algoritmos Genéricos ya implementados en la STL
Pueden ser usados con vectores y otros contenedores de la STL
(Ver WEB)
![Page 6: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/6.jpg)
Diseño y Programación Orientados a Objetos 6
Algoritmos Genéricos ya implementados en la STL (continuación)
![Page 7: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/7.jpg)
Diseño y Programación Orientados a Objetos 7
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());
![Page 8: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/8.jpg)
Diseño y Programación Orientados a Objetos 8
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
![Page 9: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/9.jpg)
Diseño y Programación Orientados a Objetos 9
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 );
![Page 10: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/10.jpg)
Diseño y Programación Orientados a Objetos 10
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());
![Page 11: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/11.jpg)
Diseño y Programación Orientados a Objetos 11
Sobrecarga del Operador <class Student {public: bool operator <(const Student & S2) { return m_sID < S2.m_sID; }
private: string m_sID; string m_sLastName;};
![Page 12: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/12.jpg)
Diseño y Programación Orientados a Objetos 12
Operaciones comunes con vectoresvector<int> items;
// Reverse the orderreverse( items.begin(), items.end());
// Randomly shuffle the orderrandom_shuffle( items.begin(), items.end());
// Accumulate the sum#include <numeric>
int sum = accumulate( items.begin(), items.end(), 0 );
![Page 13: Vectors (Vectores)profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/C++/vectors.pdf · Title: Vectors (Vectores) Created Date: 6/22/2010 7:24:15 PM](https://reader033.vdocuments.pub/reader033/viewer/2022051207/600e17b67d13b75dbb67f00c/html5/thumbnails/13.jpg)
Diseño y Programación Orientados a Objetos 13
Encontrar/Remover el valor más pequeño
vector<int> items;
vector<int>::iterator I; // find lowest valueI = min_element(items.begin(),items.end()); // erase item pointed to by iterator Iitems.erase( I );