[C con Clase] Redefinir un arreglo dinamico

David fire ddfire en gmail.com
Vie Mayo 29 04:00:20 CEST 2009


y agrego tambien hay clases lista hechas y con templates y todo eso....
David

El 28 de mayo de 2009 22:59, David fire <ddfire en gmail.com> escribió:

> Esta clarisimo que tenes toda la razon del mundo cuando se trarta de
> caracters.
> quice hacerlo un poco mas extensivo para otros tipos de datos.
> David
>
> El 28 de mayo de 2009 18:44, Programante <programante en gmail.com> escribió:
>
> David fire escribió:
>> > Hola
>> > no se para que haces lo del arreglo dinamico si es para una clase o
>> > para un trabajo o por gusto.
>> > pero la realidad es que no hay arreglos dinamicos y "hacer" uno
>> > copiando y borrando no es lo mejor, el coste en performance es
>> > altisimo. cada vez que queres agregar tenes que crear un nuevo arreglo
>> > en el heap copiar el viejo y borrar el viejo la parte de copiar es
>> > costosa en tiempo de pc.
>> > si lo vas a hacer asi al menos crealo con espacio extra.
>> >
>> > si prefiers hacerlo bien la forma es una lista.
>> > con una lista lo que haces es tenes cada elemento apunta al siguiente
>> > y el ultimo apunta a null cuando queres agregar un elemento lo pones
>> > al final y el que apuntaba a null ahora apunta al nuevo elemento. por
>> > una cuestion de velocidad siempre guardas un puntero al al ultimo
>> > elemento.
>> > y para notener que apuntar al anterior y al siguiente tambien guardas
>> > un puntero al primero.
>> >
>> > aparte de la ventaja de no tener que copiar todo el arreglo podes
>> > sacar elementos del medio sin problema o podes agregar en el medio sin
>> > tener que copiar todo el arreglo.
>> >
>> > como lo estas haciendo con C++ podes sobre cargar los [] y el = y etc
>> > para recorrerlo como un arreglo como a tu objeto lista.
>> >
>> > Saludos
>> > David
>>
>> En realidad, como se están usando cadenas en C++, lo mejor (EMHO) sería
>> utilizar la clase stl::string, que ya se encarga de todo.
>>
>> #include <iostream>
>>
>> #include <string>
>>
>> using namespace std;
>>
>> int main(void)
>>
>> {
>>
>> int n, i;
>> string Caracteres;
>>
>> cout << "Ingrese: ";
>>
>> cin >> n;
>>
>>
>> Caracteres.resize(n);
>>
>> for(i=0; i < n; i++)
>>
>>  Caracteres[i] = 'a';
>>
>>
>> Caracteres.resize(n + 1);
>>
>> Caracteres[i] = 'b';
>>
>> cout << Caracteres << endl;
>>
>> }
>>
>>
>>
>> O si preferimos usar más a fondo las posibilidades de la STL:
>>
>>
>> #include <algorithm>
>>
>> #include <iostream>
>>
>> #include <string>
>>
>> using namespace std;
>>
>> int main(void)
>>
>> {
>>
>> int n, i = 0;
>> string Caracteres;
>>
>> cout << "Ingrese: ";
>>
>> cin >> n;
>>
>>
>> Caracteres.resize(n);
>>
>> fill(Caracteres.begin (), Caracteres.end (), 'a');
>>
>> Caracteres.push_back('b');
>>
>> cout << Caracteres << endl;
>>
>>
>> }
>>
>>
>> Para este ejemplo se podría simplemente reservar los n+1 al principio,
>> pero supongo que es la simplificación de algún otro.
>>
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
> (\__/)
> (='.'=)This is Bunny. Copy and paste bunny into your
> (")_(")signature to help him gain world domination.
>
>


-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090528/d3e27b0e/attachment.html>


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