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

Jorge Vega Sanchez memmaker650 en gmail.com
Jue Nov 18 18:20:07 CET 2010


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





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