Requisitos:
El tipo de variable vector permite almacenar varios valores bajo una sola variable y realizar operaciones complejas con esta. Todos los valores dentro del vector han de ser del mismo tipo (todas int o todas string o todas char o todas bool, ...).
Lo primero que se ha de hacer para poder utilizar vectores es añadir al principio del código esta línea:
#include <vector>
Una variable de tipo vector se declara así:
vector < tipo_de_los_valores > nombre_de_la_variable( tamaño );
Por ejemplo:
vector<int> puntos_equipos(15); // Esto declara un vector de 15 valores
Podemos dar un valor inicial a todas las posiciones del vector. Por ejemplo, inicialmente queremos que todos los equipos tengan 0 puntos porque la competición todavía no ha comenzado:
vector<int> puntos_equipos(15, 0);
Los valores se pueden leer y asignar igual que con los arrays: puntos_equipos[0], puntos_equipos[1], ...
Los dos parámetros pueden ser variables:
int numEquipos = 15;
int puntosIniciales = 0;
vector<int> puntos_equipos(numEquipos, puntosIniciales);
Podemos mirar cuantos valores tiene este vector con su subsintrucción .size():
cout << puntos_equipos.size();
Esto mostrará por pantalla “15”. No importa si todas las 15 posiciones del vector tienen valor o no, te dirá el tamaño total del vector.
Podemos añadir un elemento nuevo a un vector con su subinstrucción .push_back(valor). Por ejemplo si ahora hacemos puntos_equipos.push_back(10) el vector pasaría a ser de 16 posiciones. push_back() siempre añade el valor al final del vector (al final de su tamaño, aunque tenga posiciones sin valor).
Por lo tanto incluso podríamos crear un vector sin tamaño (tamaño 0) e ir añadiendo con push_back() uno a uno los elementos que leemos del cin:
vector<int> puntos_equipos;
int numEquipos;
cin >> numEquipos;
while(numEquipos > 0) {
int puntos;
cin >> puntos;
punts_equipos.push_back(puntos);
numEquipos = numEquipos - 1;
}
Vector ofrece muchas más subinstruccions como pop_back(), insert(), erase(), sort(), que pueden ser útiles en muchos momentos.
Podemos ordenar un vector usando la función sort(). Para poder usar esta función se debe añadir la línea #include <algorithm> al principio del programa. La sintaxis de la función sort() es sort(variable.begin(), variable.end()) sustituyendo variable por el nombre de la variable:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numeros = { 1, 8, 3, 7, 0, 9 };
for (int i = 0; i < numeros.size(); i++) {
cout << numeros[i] << " ";
} // Muestra por pantalla 1 8 3 7 0 9
cout << endl;
sort(numeros.begin(), numeros.end());
for (int i = 0; i < numeros.size(); i++) {
cout << numeros[i] << " ";
}
} // Muestra por pantalla 0 1 3 7 8 9
Cuando quieres enviar como parámetro un vector a una función, a la función receptora se le debe poner un "&" antes del nombre del parámetro:
#include <iostream>
#include <vector>
using namespace std;
void muestraPosicion(vector<int> ¶metro, int index) {
cout << parametro[index];
}
int main() {
vector<int> lista;
lista = { 6, 8, 7, 3, 2, 8, 9, 3 };
int posicion;
cin >> posicion;
muestraPosicion(lista, posicion);
}
Esto es porque normalmente cuando pasamos un parámetro lo que hace C++ realmente es hacer una copia del valor y pasar esta copia a la función. Pero con los vectores casi siempre lo que queremos es que la función receptora modifique el vector y nos lo devuelva con las modificaciones, por lo tanto no queremos que reciba una copia sino que queremos que reciba el original y trabaje directamente sobre nuestra variable.
Esto, evidentemente, también se puede hacer con cualquier otro tipo de variable como int, string, char, etc:
#include <iostream>
using namespace std;
void dobla(int &n) {
n = n * 2;
}
int main() {
int num;
cin >> num;
dobla(num);
cout << num;
}