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

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Lun Abr 30 22:27:29 CEST 2012


El 30 de abril de 2012 15:52, User <usuarioanonimomysql en gmail.com> escribió:

> 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?
>
>
#include vector

No tengo los corchetes angulares ahorita en el teclado... Pónlos al incluir

También podrías usar list


> 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>
>>
>
>
> _______________________________________________
> 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
>



-- 
Asdrúbal Iván Suárez Rivera

*El éxito de alguien que enseña no es que sepa mucho, sino que lo poco que
sabe lo sepa hacer llegar.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120430/46c9f689/attachment.html>


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