martes, 8 de mayo de 2012

Introducción a Vectores en c++

Los vectores son un tipo de contenedores secuenciales; se llama así debido a que su orden es estrictamente lineal, es decir, una posición tras otra.

La clase vector es muy útil para trabajar con cierta cantidad de datos desconocidos y arreglos, pues permite manejar dinámicamente objetos en dichos arreglos, pudiendo crearlos de clases y variables expandiendo o contrayendo el arreglo.

dicha clase se encuentra definida en la cabecera vector para incluirla simplemente se coloca en el campo de declaraciones.
#include <vector>  ;


Para declarar un vector se usa la siguiente notación formal
template < class T, class Allocator = allocator<T> > class vector;


Los que no entienden mucho la notación de arriba, en español (y en el codigo) se declara parecido a lo siguiente.
vector<tipo> nombre_vector;  




Como ejemplo, para declarar un vector de enteros se hace de la siguiente manera

vector <int>enteros;


La parte de class Allocator = allocator, se usa para indicar el tamaño en memoria que debe tomar cada elemento del vector, si no se especifica, tomara el tamaño definido en la clase que se le paso, en este caso, int [2 bytes] C/elemento.

Comparados con los arreglos, los vectores pueden ser redimensionados fácilmente, aunque los vectores suelen consumir mas memoria pues mantienen alguna cantidad reservada para futuros incrementos.

Cuando se incrementa demasiado rápido un vector, suele disminuir mucho el performance del programa, pues el vector debe redimensionar la memoria que ocupa a un espacio mas grande, para evitarlo, se puede recurrir a tener una reserva constante de memoria para el vector con vector::reserve.

Voy a tomar algunas de las funciones mas importantes (aunque todas lo son) y a explicarlas en un código de ejemplo que no va a tener mucho sentido, pero sera bueno para ilustrar el uso básico de vectores.
#include <vector>  
#include <iostream>

using namespace std;  
  
int main()  
{  
    //Declaracion simple vector.  
    vector <int>enteros;  
    int num;  
  
    cout << num;  
  
    //se agrega un elemento al final del vector  
    enteros.push_back(num);  
  
    //se accede a una posicion estatica del vector y se muestra su amplitud  
    cout << "En la posicion 0 esta : " << (enteros[0]) << endl  
         << "Longitud del vector : "   << (enteros.size()) << endl  
         << "Capacidad: " << (enteros.capacity()) << endl  
         << "Longitud maxima del vector: " << (enteros.max_size()) << "\n\n";  

  
    //Se limpia el vector, es decir, se vacia  
    enteros.clear();  
  
    for (int i=1; i <=10; i++)  
    enteros.push_back(i);  
  
    cout << "Hay en el vector: " << (enteros.size()) << " elementos\n";  
  
    //Elimino el ultimo elemento del vector  

    enteros.pop_back();  
  
    cout << "Hay en el vector: " << (enteros.size()) << " elementos\n";  
  
    return 0;  
}  

salida:
Entre un numero: 666
En la posicion 0 esta : 666
Longitud del vector : 1
Capacidad: 1
Longitud maxima del vector: 1073741823


Hay en el vector: 10 elementos
Hay en el vector: 9 elementos

Esto es lo basico que se debe saber sobre vectores.

2 comentarios:

  1. Generalmente para utilizar un vector en varias funciones se utiliza un puntero al vector, que se crea como variable global, debido a que un puntero no ocupa casi memoria y es buena práctica su uso.
    Ese puntero es el que se pasa a la función.
    Si no lo podes pasar normal como si de otra variable se tratara.

    ResponderEliminar