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

User usuarioanonimomysql en gmail.com
Mar Oct 9 11:19:20 CEST 2012


Hola de nuevo,

¿Sería posible conocer el número de elementos del array de double al
finalizar sin guardar dicho número en una variable de tipo int?

Perdonand el reflote.

Saludos.

El 1 de mayo de 2012 22:36, User <usuarioanonimomysql en gmail.com> escribió:

> Perfecto Steven,
>
> Muchas gracias por tu rápida respuesta. Lo pondré en práctica.
>
> Saludos.
>
> El 1 de mayo de 2012 21:47, Steven Davidson <srd4121 en njit.edu> escribió:
>
> Hola User,
>>
>>
>> On 5/1/2012 2:21 PM, User wrote:
>>
>>> Hola de nuevo,
>>>
>>> He realizado este pequeño programa para probar la alternativa que no
>>> usa clases plantillas:
>>>
>>> #include <iostream>
>>> #include <stdio.h>
>>> #include <stdlib.h>
>>>
>>
>> Deberías acostumbrarte a los nombres correctos de estos ficheros
>> estándares de cabecera de C++:
>>
>> #include <cstdio>
>> #include <cstdlib>
>>
>> Aunque creo que no necesitas <cstdio>.
>>
>>
>>  #include <fstream>
>>>
>>> using namespace std;
>>>
>>> int main()
>>> {
>>>
>>
>> [CORTE]
>>
>> Recuerda que debes liberar la memoria previamente adjudicada por
>> 'realloc()'. Escribe:
>>
>> free( pDoubles );
>>
>>
>>      return 0;
>>> }
>>>
>>> Imaginemos ahora que necesito que el array de doubles sea
>>> bidimensional, es decir, sabemos que va a tener dos columnas, pero un
>>> número indeterminado de filas.
>>>
>>> ¿Cómo podría implementarlo?
>>>
>>>
>> Si sabes que van a ser dos números por elemento, entonces tienes dos
>> posibles soluciones:
>>
>> 1. Crea un array de 'double' con el doble de la cantidad de elementos que
>> necesitas. Por ejemplo,
>>
>>
>> double *pDoubles = NULL;
>> int nCant = 0;
>>
>> pDoubles = (double *) realloc( pDoubles, ++nCant * 2 * sizeof(double) );
>> ...
>> Y luego, para acceder a un elemento, doblamos el índice:
>>
>> pDoubles[2*5] = -1.023;
>> pDoubles[2*5+1] = 6.7031;
>>
>> Se trata del 6º elemento - de índice 5, pero realmente se trata de los
>> elementos de índices 10 y 11 en nuestro array.
>>
>>
>> 2. Crea un array de un array de 'double'. Esto es,
>>
>> typedef double coordenada[2];
>> ...
>> coordenada *pDoubles = NULL;
>> int nCant = 0;
>>
>> pDoubles = (coordenada *) realloc( pDoubles, ++nCant * sizeof(coordenada)
>> );
>> ...
>> Para acceder a un elemento, usamos el índice para 'pDoubles' y otro para
>> la "columna":
>>
>> pDoubles[5][0] = -1.023;
>> pDoubles[5][1] = 6.7031;
>>
>> Como puedes ver, creamos un tipo que realmente es un array de 2 'double',
>> para usarlo en el array dinámico de 'coordenada'.
>>
>>
>> Si quieres, puedes crear un array dinámico de arrays dinámicos de
>> 'double'. Por ejemplo,
>>
>> double **pDoubles = NULL;
>> int nCant = 0;
>>
>> pDoubles = (double **) realloc( pDoubles, ++nCant * sizeof(double *) );
>> pDoubles[i] = (double *) realloc( pDoubles, 2 * sizeof(double) );
>>
>> pDoubles = (double **) realloc( pDoubles, ++nCant * sizeof(double *) );
>> pDoubles[i] = (double *) realloc( pDoubles, 2 * sizeof(double) );
>> ...
>> El acceso a un elemento es el de un array bidimensional:
>>
>> pDoubles[5][0] = -1.023;
>> pDoubles[5][1] = 6.7031;
>>
>>
>>
>> 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/20121009/e1ee6cd6/attachment.html>


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