C++ Variables de tipo vector

Enviado por jvilella el Lun, 23/09/2019 - 04:17

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> &parametro, 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;
}
Printer Friendly, PDF & Email

Etiquetas

Comentarios

Hola me podria ayudar con este ejercicio:

Se desea recorrer el siguiente vector vector[] = {2,1,4,3,6,5,8,7,10,9}; y multiplicar
cada número del vector con el número que el usuario ingrese,

#include <iostream>
using namespace std;

int main()
{
int limite,numero;
int vector[]={2,1,4,3,6,5,8,7,10,9};
limite=sizeof(vector)/sizeof(vector[0]);
for(int i=0;i<limite;i++)
{
cout<<"ingrese el numero que multiplicara el vector"<<endl;
cin>>numero;
cout<<"resultado:"<<vector[i]*numero<<endl;

}

}

int i=0;
int num;
int tope = vector.length();
while(i < tope){
cout<<"Ingrese un numero para multiplicarlo al valor "<<vector[i]<<endl;
cin>> num;
vector[i] = vector[i]*num;
i++;
}
// ahora recorremos el vector con sus nuevos valores
for (int i =0 ; i < tope ; i++){
cout<<vector[i] <<" " ;
}

#include <iostream>
#include <vector>
int main()
{
int n;
vector<int> numeros(10);
//se declara el vector
numeros[0] = 2;
numeros[1] = 1;
numeros[2] = 4;
numeros[3] = 3;
numeros[4] = 6;
numeros[5] = 5;
numeros[6] = 8;
numeros[7] = 7;
numeros[8] = 10;
numeros[0] = 9;
// se inicialia el vector
for(int i = 0; i < numeros.size(); i++)// se multiplican los numeros
{
int N; cin >> N;
int multiplicacion = N * numeros[i]
cout << multiplicacion << " ";// si se necesita imprimir la multiplicacion
}
}

#include <iostream>
#include <vector>

using namespace std;

int main(){
int factor = 0;
vector <int> numeros = {2,1,4,3,6,5,8,7,6,9};
for(int x = 0; x < numeros.size(); x++){
cout << "ingrese un numero para -> "<<numeros[x]<<" x ";
cin >> factor;
cout << " ==> "<<numeros[x]*factor<<"\n\n" ;
}

return 0;
}

#include <iostream>
using namespace std;

int main()
{
int limite,numero;
int vector[]={2,1,4,3,6,5,8,7,10,9};
limite=sizeof(vector)/sizeof(vector[0]);
cout<<"ingrese el numero que multiplicara el vector"<<endl;
cin>>numero;
for(int i=0;i<limite;i++)
{

cout<<"resultado:"<<vector[i]*numero<<endl;

}

}

#include<vector>
#include<iostream>

using std::vector;

int main(int argc, char const *argv[])
{
int numero;
vector<int> v{2,1,4,3,6,5,8,7,10,9};
std::cin>>numero;
for (int i = 0; i < v.size(); ++i)
{
std::cout<<v[i]<<"\t"; //Imprime los valores asignados en el vector
}
std::cout<<"\n";
for (int i = 0; i < v.size(); ++i)
{
v[i]*=numero; //multiplica los valores por el numero asignado
std::cout<<v[i]<<"\t"; //muestra los nuevos valores del vector
}
}

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.