Redimensionar un vector

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
pachu23
Mensajes: 6
Registrado: 25/10/2019 10:30 pm

Redimensionar un vector

#1 Mensaje por pachu23 » 25/10/2019 10:53 pm

Hola, quisiera saber como redimensionar un vector (es decir duplicarlo, triplicarlo, etc) en C++. Por ejemplo, si tengo un vector a = <1,3,5> y n = 3 tendria que quedar a = <1,3,5,1,3,5,1,3,5>. No sé como hacerlo ya que es la primera vez que tengo que trabajar con un vector al cual hay que cambiarle la longitud.

Se me habia ocurrido que tiene que tener esta forma

vector<int> redimensionar (vector<int> a, int n) {
for (int i = 0; i < a.size(); i ++) {
//Aca no sé que poner
}
return a;
}

Gracias de antemano y perdón si estoy haciendo algo incorrecto en la publicación, es la primera vez que escribo en el foro.

Avatar de Usuario
kiko66
Mensajes: 44
Registrado: 11/10/2019 10:51 am

Re: Redimensionar un vector

#2 Mensaje por kiko66 » 26/10/2019 7:10 am

hola pachu

he mirado y pauek lo expica muy bien si quieres buscalo en youtube ahi tiene una lista de reproduccion que dice "c++ - STL", ahi esta la clase vector bien explicada con un video especifico de como redimensionar vectores :D

ahi dice que se utiliza el metodo "resize" de la clase vector tal que asi:

Código: Seleccionar todo

#include <vector> 

int main(void){

   vector<int> v(10, 5);

   v.resize(12, -1);

}
tanto al definir el vector como al redefinirlo el segundo parametro es opcional y es el valor con el que se rellenan los campos

suerte con el programa :)

pachu23
Mensajes: 6
Registrado: 25/10/2019 10:30 pm

Re: Redimensionar un vector

#3 Mensaje por pachu23 » 26/10/2019 9:19 am

Hola kiko, gracias por responder.

Estuve viendo los videos de pauek y es cierto que ese metodo funciona, pero no tengo permitido usar el “resize”, necesito hacerlo con un for. Alguna idea?

Avatar de Usuario
kiko66
Mensajes: 44
Registrado: 11/10/2019 10:51 am

Re: Redimensionar un vector

#4 Mensaje por kiko66 » 26/10/2019 1:59 pm

hola pachu

veras conozco algo de c y muy poco de c++, :roll:
en principio yo utilizaria memoria dinamica calcularia el tamaño con sizeof y con
malloc pediria memoria al sistema luego copiaria el primer vector las veces pedidas
y liberaria la memoria del primer vector (si es que se puede) :?:

para ayudarte deberia verme los videos de la clase vector para saber si hay algun
resquicio con el que poder resolver el problema, dentro de la misma clase
Última edición por kiko66 el 26/10/2019 2:05 pm, editado 2 veces en total.
para cuando el resaltado de codigo :?:

Avatar de Usuario
kiko66
Mensajes: 44
Registrado: 11/10/2019 10:51 am

Re: Redimensionar un vector

#5 Mensaje por kiko66 » 26/10/2019 2:01 pm

:idea: quizas seria facil calcular el espacio a reservar por ej 9 elementos (3x3) crear un
nuevo vector y rellenarlo con el primero las veces pedidas

con los conocimientos que tengo no se me ocurre otra cosa

voy a verme unos videos, ya me cuentas si haces progresos :wink:

suerte pachu

pachu23
Mensajes: 6
Registrado: 25/10/2019 10:30 pm

Re: Redimensionar un vector

#6 Mensaje por pachu23 » 26/10/2019 4:00 pm

Ya lo pude hacer, lo paso para el que quiera copiarlo

Código: Seleccionar todo

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> a = {1,2,3,4,5,6};
     vector<int> res ={};
     int n = 3;
	 for(int i = 0; i < a.size(); i++){
        res.push_back(a[i]);
    }

    for(int i = a.size(); i< (a.size() * n) ; i++){
        res.push_back(a[i - a.size()]);
    }

    for(int i = 0; i < (a.size() * n); i++){
        cout << res[i] << " "l;
    }
    return 0;
  }

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados