La clase vector forma parte de la librería estándar de C++, y en particular de la STL: la Standard Template Library. La palabra "template" significa plantilla en inglés, o sea que la STL es una librería de plantillas. El significado de esto quedará claro más adelante.
Los vectores son tablas, realmente. Pero de alguna manera sustituyen a las tablas porque son más potentes. Un ejemplo, cuando declaramos una tabla como:
int tabla[10];
su tamaño es fijo durante todo el programa. No podemos añadir ni quitar casillas a esa tabla en ningún momento. En cambio, si en vez de una tabla creamos un vector podremos cambiar su tamaño más adelante, en función de nuestras necesidades.
Para utilizar vectores, primero hay que añadir #include <vector> al principio del programa. Luego la declaración se hace así:
vector<int> v(10);
Primero ponemos vector y luego seguido ponemos, entre ángulos, el tipo de las casillas del vector. O sea, vector<char> es el tipo de un vector de caracteres, vector<double> de reales, etc.
Luego viene el nombre, que es v, y seguido, pero entre paréntesis, el tamaño. Con respecto a las tablas, en la declaración hay que poner paréntesis en vez de corchetes.
Si bien la declaración es distinta, el acceso a las casillas en un vector es igual que con las tablas. Para acceder a la primera casilla de tabla y de v y poner un 20 haremos:
tabla[0] = 20; v[0] = 20;
Sigue ocurriendo que la primera casilla es la 0, y que hay que poner el índice entre corchetes al lado del nombre.
Al igual que con las tablas, acceder a una casilla que está fuera de rango (con un índice fuera de los límites) produce un error de ejecución casi siempre. Si el vector tiene 10 casillas, por ejemplo, y hacemos:
v[10] = 5;
el programa probablemente se interrumpirá (aunque no siempre). Cuanto más lejos del rango correcto es más fácil que el programa se interrumpa:
v[10000] = -1;
seguro que produce un error si el vector tiene 10 casillas.
Una de las características de los vectores más interesantes es poder añadir casillas (o quitar). Para añadir una casilla a un vector se utiliza el método push_back. Por ejemplo:
v.push_back(-1);
añade un -1 al final del vector. Como que tenia 10 casillas, ahora tendrá 11, y la casilla con índice 10 (la última) contendrá ese -1.
Si continuamos poniendo enteros:
v.push_back(3); v.push_back(5);
el vector se irá haciendo grande para ir acomodando los enteros que vamos poniendo.
Por tener tamaño variable, en un momento dado, nos puede interesar saber exactamente cuántas casillas tiene un vector. Eso se puede saber utilizando el método size. Si por ejemplo queremos mostrar el vector v por pantalla, entonces haremos un bucle como este:
int tam = v.size(); for (int i = 0; i < tam; i++) { cout << v[i] << ' '; } cout << endl;
Antes de empezar, averiguamos el tamaño con v.size() y lo guardamos en la variable tam, que utilizamos en el bucle para controlar cuántas casillas mostraremos por la pantalla.
En preparación