VECTORES
Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.
Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.
Crear un vector en C++ es sencillo, seguimos la siguiente sintaxis: Tipo nombre[tamaño];
Ejm:
1
2
3
| int a[5]; // Vector de 5 enterosfloat b[5]; // vector de 5 flotantesProducto product[5]; // vector de 5 objetos de tipo Producto |
Podríamos también inicializar el vector en la declaración:
1
2
3
| int a[] = {5, 15, 20, 25, 30};float b[] = {10.5, 20.5, 30.5, 12.5, 50.5}Producto product[] = {celular, calculadora, camara, ipod, usb} |
Como hay 5 elementos en cada array, automáticamente se le asignará 5 espacios de memoria a cada vector, pero si trato de crear el vector de la forma int a[] , el compilador mostrará un error, porque no indiqué el tamaño del vector ni tampoco inicializé sus elementos.
Asigno valores a los elementos de un vector indicando su posición:
1
2
| int a[4] = 30; // le asigno el valor 30 a la posición 4 del vector.product[2].setPrecio(300) // le asigno un precio de 300 al producto en la posición 2. |
Obviamente el método setPrecio() debe de estar implementado. Para llenar, recorrer e imprimir un vector podemos utilizar un bucle for:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <iostream>using namespace std;int main(){ int dim; cout << "Ingresa la dimensión del vector" << endl; cin >> dim; // Supongamos que ingrese 10 int vector[dim]; // mi vector es de tamanyo 10 for(int i = 0; i < dim; i++){ vector[i] = i * 10; cout << vector[i] << endl; } return 0;} |
La salida del programa mostrará: 0 10 20 30 40 50 60 70 80 90 Fàcil verdad? Bien ahora creen 2 o más vectores y empiecen a hacer funciones básicas como sumar, restar, buscar, ordenar, moda, etc que ayudan mucho a ir desarrollando la lógica. No vale copiar y pegar, mejor es practicar, practicar y practicar.
Aquí una función simple para sumar 2 vectores a y b y poner el resultado en un tercer vector c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| #include <iostream>using namespace std;void sumar(int a[], int b[], int c[],int dim) { for (int i = 0; i < dim; i++) { c[i] = a[i] + b[i]; }}void imprimir(int v[], int dim){ for(int i = 0; i < dim; i++) { cout << v[i] << endl; } cout << endl << endl;}int main(){ int dim; cout << "Ingresa la dimensión" << endl; cin >> dim; int a[dim]; int b[dim]; int c[dim]; for(int i = 0; i < dim; i++) { a[i] = i * 10; b[i] = i * 5; } cout << "Vector A " << endl; imprimir(a, dim); cout << "Vector B " << endl; imprimir(b, dim); sumar(a, b, c, dim); cout << "Vector C " << endl; imprimir(c, dim); return 0;} |
Si ingreso una dimensión de 10, este programa me daría:
Vector A
0 10 20 30 40 50 60 70 80 90
VECTOR B
0 5 10 15 20 25 30 35 40 45
VECTOR C
0 15 30 45 60 75 90 105 120 135
Entonces para tomar en cuenta:
- Todo vector debe tener definido un tipo de dato.
- Todo vector necesita de una dimensión o tamaño.
VECTORES DINÁMICOS
Lo que vimos en el inicio de este post, son vectores estáticos, puesto que tienen una cantidad fija de memoria asignada y tamaño definido que no podemos modificarlo. Sin embargo, un vector podría tener una cantidad variable de datos, a este se le llama un vector dinámico.
Para usar vectores dinámicos necesitamos gestionar memoria dinámica. Si bien es cierto que es trae enormes ventajas, el hacer un mal uso de la memoria dinámica nos podría traer problemas desastrosos.
Por eso es importante que que cuando creemos vectores dinámicos también liberemos la memoria utilizada. Obviamente eliminaremos la memoria utilizada cuando ya no necesitamos más usar, en este caso, un determinado vector.
El operador new sirve para reservar memoria dinámica. El operador delete se usa para liberar la memoria dinámica reservada con new.
Para liberar memoria de un array dinámico usamos delete[] El espacio de memoria que hemos reservado con new tendrá vida hasta que finalize la ejecución del programa o cuando liberemos ese espacio con delete.
Siempre es recomendable liberar memoria para posteriormente no tener problemas con excesivo consumo de memoria. Un simple ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #include <iostream>using namespace std;int main(){ int *pv; int dim; cout << "Ingresa el tamanyo del vector" << endl; cin >> dim; pv = new int[dim]; for(int i = 0; i < dim; i++){ pv[i] = i * i; cout << pv[i] << endl; } delete[] pv; return 0;} |

No hay comentarios:
Publicar un comentario