Pues eso...
¿Como se podria hacer un vector para almacenar datos que le van entrando uno a uno desde cin (no sabes cuantos van a entrar ni puedes reservar un determinado tamaño de memoria para tu vector)?
Gracias y un saludo.
| |||
Crear vector sin saber tamaño Pues eso... ¿Como se podria hacer un vector para almacenar datos que le van entrando uno a uno desde cin (no sabes cuantos van a entrar ni puedes reservar un determinado tamaño de memoria para tu vector)? Gracias y un saludo. |
| |||
¿No habria una forma más "sencilla" de hacerlo sin usar las funciones malloc o realloc? Mi problema en concreto es que tengo una clase Polinomio cuya parte privada es : 1º un puntero (lamado coef) de float donde se guardan los coeficientes de un polinomio cuyo grado lo indica la posicion i dentro de ese mismo puntero o vector dinamico 2º un entero que nos indica el tamaño de dicho puntero o vector. Entonces yo tengo que sobrecargar el operador de entrada de un polinomio desde un flujo, por el cual entraran grado y coeficiente, grado y coeficiente... asi un indeterminado numero de veces. Y esa es mi duda, como ir almacenando en coef los coeficientes y en sus respectivas "casillas" dependiendo del grado. Gracias de nuevo y un saludo. |
| ||||
Pues no sabría decirte, para mí la forma más sencilla es usar malloc. Le paso el testigo a otros usuarios del foro que tienen más conocimientos de programación que yo a ver si ellos pueden echarte una mano. Sólo un último apunte. Si usas malloc no olvides liberar la memoria asignada con free. En el ejemplo que te puse, free(q); Un saludo. |
| |||
Pues como ya menciono yournightmare86 la unicamanera que hay para manejar vectores dinamicos es usando memoria dinamica, ya sea que uses malloc en C y new en C++. otra solucion sera utilizar listan enlazadas, ya sea que crees tu lista o uses la plantilla de STL. si usaras new puedes ir escalando la creacion de memoria, para no redimencionar en cada entrada. puedes empezar con 10, llenas tus 10 indices y si hay un siguiente redimenciona a 20. y asi las siguientes entradas. int INIT = 10; int *vector = new int[INIT]; para llenarlo: if(entrada < INIT) { vector[entrada] = valor; } else { vector = new(vector) int[(INIT+=10)]; } esa es la idea. Saludos. para sobrecargar los operadores << y >> estos tienen que ser funciones amigas de tu clase. ostream &operator<<(ostream &os, int valor); istream &operator>>(istream &is, int valor); Saludos |