[C con Clase] Vector de tamaño indef, definido en metodo.

Jorge Vega Sanchez memmaker650 en gmail.com
Vie Nov 19 11:03:02 CET 2010


Eso era justamente Ruben lo que me faltaba. Me di cuenta un rato después de mandar el mail.

Gracias.
El 18/11/2010, a las 19:11, Rubén Tomás escribió:

> Me da la impresion de que se te olvida borrar la memoria asignada antes, en "array = new int;"
> 
> void metodo(int* vector)
> {
> int N=5;
> 
> delete vector;
>  vector = new int[N];
> for(int i=0; i<5; i++)
> {
>  vector[i]=i+5;
>  }
>  printf("Valores del vector: %d, %d, %d, %d y %d \n",vector[0],vector[1],vector[2],vector[3],vector[4]);
> }	
> 
> > From: memmaker650 en gmail.com
> > Date: Thu, 18 Nov 2010 18:20:07 +0100
> > To: cconclase en listas.conclase.net
> > Subject: Re: [C con Clase] Vector de tamaño indef, definido en metodo.
> > 
> > Creo que lo mejor es hacerlo con memoria dinamica. Pero aun así no me termina de funcionar el ejemplo.
> > 
> > #include <stdio.h>
> > #include <vector>
> > 
> > using namespace std;
> > 
> > void metodo(int*);
> > 
> > int main()
> > {
> > int *array;
> > array = new int;
> > 
> > metodo(array);
> > 
> > printf("Tercer valor del vector: %d \n", array[2]);
> > 
> > delete[] array;
> > 
> > return 0;
> > }
> > 
> > void metodo(int* vector)
> > {
> > int N=5;
> > 
> > vector = new int[N];
> > for(int i=0; i<5; i++)
> > {
> > vector[i]=i+5;
> > }
> > printf("Valores del vector: %d, %d, %d, %d y %d \n",vector[0],vector[1],vector[2],vector[3],vector[4]);
> > }	
> > El 18/11/2010, a las 16:07, Gilberto Cuba Ricardo escribió:
> > 
> > > Hola Jorge,
> > > 
> > > Jorge Vega Sanchez escribió:
> > >> Buenas a todos.
> > > 
> > >> A ver el problema que tengo es:
> > >> - Tengo que definir un vector y array en el programa principal pero
> > >> no se su tamaño. Si se el tipo del array.
> > > 
> > > Bueno, lo de vector y array a la misma vez no lo tendría muy bien
> > > claro. Pero de un vector solo tal vez pudiéramos hacer algo, sin
> > > embargo con un array sólo, me temo que no pudiera ayudarte si te estás
> > > refiriendo a la librería estándar del c++, y sino que me corrijan los
> > > que están mas duchos en esta temática, pero creo que lo del array
> > > viene con el nuevo c++0x.
> > > 
> > > Entonces vamos a lo que nos ocupa. Lo primero es hacer referencia a la
> > > librería que contiene las definiciones que vamos a usar, en nuestro
> > > caso la de vector en la estándar, y luego usamos el espacio de nombres
> > > donde se definen los elementos de esta librería.
> > > 
> > > #include <vector>
> > > 
> > > using namespace std;
> > > ...
> > > 
> > > Luego en el programa principal, hacemos una declaración de un objeto
> > > de la clase vector como veremos a continuación y de ahí, bueno, a
> > > seguir para adelante. :)
> > > 
> > > ...
> > > int
> > > main()
> > > {
> > > ...
> > > 
> > > typedef int mytype;
> > > 
> > > // en esta parte lo que está entre <>,
> > > // es el tipo que dices que conoces.
> > > vector <mytype> my_new_vector;
> > > 
> > > // reservamos el espacio según el tamaño del tipo
> > > // y la cantidad de elementos que no conozco de forma
> > > // predeterminada
> > > my_new_vector.reserve( N * sizeof(mytype) );
> > > 
> > > // y entonces se accede a los elementos del vector de la forma
> > > my_new_vector[0] = 2;
> > > my_new_vector[1] = 12;
> > > my_new_vector[2] = 22;
> > > ...
> > > 
> > > // o algo similar con
> > > my_new_vector.resize( N );
> > > my_new_vector[0] = 2;
> > > my_new_vector[1] = 12;
> > > my_new_vector[2] = 22;
> > > 
> > > // o también no definir ni "reserve", ni "resize" y dejarlo
> > > // abierto para ir agregando información al final del vector
> > > my_new_vector.push_back( 32 );
> > > my_new_vector.push_back( 42 );
> > > 
> > > return 0;
> > > }
> > > 
> > >> - El tamaño y sus componentes se definen en un metodo/arreglo/procedimiento.
> > > 
> > > No entiendo qué preguntas aquí.
> > > 
> > >> Estoy probando formas pero de momento todas me dan error.
> > > 
> > > Si no es esto lo que preguntabas, pues entendí mal y olvida lo que
> > > puse. Cualquier otra duda, no dudes en preguntarla.
> > > 
> > >> Un saludo y gracias de antemano.
> > > 
> > > -- 
> > > Saludos,
> > > Gilberto Cuba Ricardo
> > > 
> > > 
> > > _______________________________________________
> > > Lista de correo Cconclase Cconclase en listas.conclase.net
> > > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> > 
> > 
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101119/a34751a8/attachment.html>


Más información sobre la lista de distribución Cconclase