Vectores (Vector) -...
Transcript of Vectores (Vector) -...
![Page 1: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/1.jpg)
ELO320 1
Vectores (Vector)
Agustín J. GonzálezELO320
![Page 2: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/2.jpg)
ELO320 2
Plantillas (Templates)
• Como podemos definir una colección de datos sincomprometer el tipo de datos siendo agrupados?
• La idea de una template es poder parametrizar el tipo dedatos que una clase puede contener
• Se puede pensar un template como una función conparámetro, en donde el parámetro es un tipo de dato.
![Page 3: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/3.jpg)
ELO320 3
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;}template <class T> void swap (T & a, T & b)
// swap the values held by a and b{
T temp = a;a = b;b = temp;
}
![Page 4: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/4.jpg)
ELO320 4
Declaración de tipos basados entemplates
• Para declarar un valor (variable, o mejor objeto) con untipo template (plantilla), el tipo se indica en paréntesis.
vector<int> a(10);vector<double> b(30);vector<string> c(15);
![Page 5: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/5.jpg)
ELO320 5
Operaciones sobre vectores
![Page 6: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/6.jpg)
ELO320 6
Tamaño de un vector
• El vector mantiene un buffer interno. El tamaño de estebuffer permite almacenar al menos tantos elementos comolos contenidos en el vector.
• Los dos tamaños pueden ser accedidos y cambiados através de llamados a funciones.
![Page 7: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/7.jpg)
ELO320 7
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”);
![Page 8: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/8.jpg)
ELO320 8
Ejemplo: generador de sentenciascomplemento.push_back(“ratón”);complemento.push_back(“estudiantes”);complemento.push_back(“cuadros”);• Luego podemos formar sentencias confor (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ónPaula pinta cuadrosGente come cuadros ...
![Page 9: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/9.jpg)
ELO320 9
Algoritmos genéricos útiles con vectores
![Page 10: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/10.jpg)
ELO320 10
Algoritmos genéricos útiles con vectores (cont)
![Page 11: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/11.jpg)
ELO320 11
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
![Page 12: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/12.jpg)
ELO320 12
La historia sigue.. Por ejemplo listas
![Page 13: Vectores (Vector) - profesores.elo.utfsm.clprofesores.elo.utfsm.cl/~agv/elo320/01and02/stl/vectors.pdf · ELO320 7 Ejemplo: generador de sentencias • Cada sentencia puede ser vista](https://reader033.fdocuments.mx/reader033/viewer/2022053014/5f12df701f9d68329257f7fa/html5/thumbnails/13.jpg)
ELO320 13
Tipos para organizar colecciones (Contenedores)