[C con Clase] Array dinámico en C++ estándar

User usuarioanonimomysql en gmail.com
Lun Abr 30 22:22:18 CEST 2012


Hola Steven,

Me voy a decantar por utilizar la clase-plantilla dinámica vector, ya que
según comentas es la forma más optimizada.

¿Necesito incluir algún fichero de cabecera para que reconozca la
clase-plantilla dinámica vector?

Saludos y gracias por la rápida respuesta.

El 30 de abril de 2012 20:20, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola User,
>
>
> On 4/30/2012 10:55 AM, User wrote:
>
>> Hola a todos,
>>
>> Quiero guardar la información proveniente de un fichero de texto a un
>> array de doubles. Ejemplo de datos de entrada provenientes del
>> fichero de texto:
>>
>> 12.34
>> 23.45
>> 45.67
>> 34.43
>> 0.121
>>
>> El caso es que no siempre vendrá el mismo número de filas en el
>> fichero de texto, por lo que la longitud del array de doubles será
>> variable.
>>
>> ¿Cómo puedo implementar una solución de la manera más limpia y
>> sencilla posible en C++ estándar?
>>
>>
> Bueno, la forma más "sencilla", pero quizá menos optimizada, sería leyendo
> el fichero para ir contando cada carácter de fin-de-línea, que por lo nos
> muestras cada número está en cada línea. Así tendrás la cantidad de números
> para que puedas crear el array dinámico con la cantidad necesaria.
>
> La otra solución sería usar alguna clase-plantilla dinámica, como puede
> ser 'vector' o 'list'. Por ejemplo,
>
> vector< double > listaDoubles;
> ifstream ifs( "datos.txt" );
>
> double fAux;
>
> ifs >> fAux;
> listaDoubles.push_back( fAux );
> ifs >> fAux;
> listaDoubles.push_back( fAux );
> ...
>
> Si no quieres o no puedes usar clases plantillas, entonces recrea su
> funcionalidad usando arrays dinámicos, aunque aconsejo usar 'realloc()' en
> lugar de 'new[]', para este caso. Esto es porque 'realloc()' puede
> ensanchar el array sin modificar su contenido original. Por ejemplo,
>
> double *pDoubles = NULL;
> int nCant = 0;
>
> // Aumentamos el array
> pDoubles = (double *) realloc( pDoubles, ++nCant * sizeof(double) );
>
> ifstream ifs( "datos.txt" );
> ifs >> pDoubles[nCant-1];
>
> // Aumentamos el array
> pDoubles = (double *) realloc( pDoubles, ++nCant * sizeof(double) );
> ifs >> pDoubles[nCant-1];
> ...
>
>
> Espero que esto te oriente.
>
> Steven
>
>
> ______________________________**_________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/**mailman/listinfo/cconclase_**
> listas.conclase.net<http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net>
> Bajas: http://listas.conclase.net/**index.php?gid=2&mnu=FAQ<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/20120430/959b64d2/attachment.html>


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