FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
clonar o duplicar Lista C++
Hola Amigos del foro.
tengo un problemita... (ó quizas un problema grande) tengo una listaPersonas y esta asociada a una listaAsociaciones, la primer lista hace referencia a la segunda, donde me dice con quien esta asociada esta ListaPersonas[item]. Cada vez q se inicializa listapersona obtiene un numero aleatoria unico, para cada item's. Entonces, ahora lo que quiero hacer es hacer una copia o un clon de estas listas y llamarla listaPersonas2 y listaAsociaciones 2 y usarla para ensayos y despues compararlas. ¿es posible hacer esto,de manera que reasigne los punteros de referencia y no me de error? opcion que se me ocurrio: (1)pasar la informacion a txt y a partir de ello rearmar las listas , pero existe el problema que toma mucho tiempo si son mas de 1000 elementos. (2) preguntar, quizas existe una funcion que lo haga solo. Muchas gracias, por su colaboración. pd: si no se entedio , lo vuelvo a redactar. Gracias |
#2
|
||||
|
||||
Y esas listas ¿que son?. Arrays de punteros char**, objetos TList...
Saludos. |
#3
|
|||
|
|||
hola escafandra, gracias por ayudarme
si tenes razon no di muchas especificaciones, son Tlist de objetos. gracias |
#4
|
||||
|
||||
TList es una clase que simplemente guarda una lista de punteros. Si copias los punteros, no duplicas la lista, pues apuntan al mismo sitio y si destruyeras el original, la copia se corrompe (sus puntero no apuntan a nada válido).
Debes realizar una copya de cada objeto apuntado. Te muestro un ejemplo con cadenas: Código:
TList *List1 = new TList; TList *List2 = new TList; List1->Add("uno"); List1->Add("dos"); // Añado una copia de cada elemento de List1 for(int i=0; i<List1->Count; i++) List2->Add(StrNew((char*)List1->Items[i])); |
#5
|
|||
|
|||
Hola Escafandra, muchas gracias, por responder
Te cuento la idea es literalmente copiar la lista, y no hacer una copia de la lista de los punteros. "Seria como ejecutar 2 veces el mismo ejecutable, pero que los ejecutables tengan las mismos valores de las variables y que los punteros sean distintos, de manera de poder usar la lista copia para hacer ensayos ó pruebas (independientes)" No se si esto es posible, por eso proponia de los txt, de manera que me devuela la posicion de cada item de la lista y me diga hacia donde apunta de la segunda lista (La cosa es q me consume demasiado tiempo bajar a disco y subir). Muchas gracias, BC++ |
#6
|
||||
|
||||
Lo que te ha recomendado escafandra es lo más adecuado hacer, es decir copiar cada elemento de la lista a tu nueva lista destino.
Cabe mencionar que la Clase TList cuenta con un método que te hace todo: Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#7
|
||||
|
||||
La pega está en que el método TList::Assign no es incorporado al Builder hasta la versión 6. Los que usen la 5 no lo podrán usar, teniendo que realizar la copia manual (que es bien sencilla)
Saludos. |
#8
|
|||
|
|||
Muchas gracias!, lo pruebo y les aviso
Saludos,BC++ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
clonar forms | titomigue | Varios | 5 | 03-06-2010 15:40:50 |
Clonar TADOQuery | david.rguez | Conexión con bases de datos | 2 | 19-09-2007 16:26:44 |
Clonar Objeto | senda | OOP | 1 | 13-08-2007 18:24:35 |
Duplicar / Clonar tabla con ADO | Marcb3 | Conexión con bases de datos | 2 | 30-01-2007 13:15:37 |
Como Clonar un ibDataset???? | AGAG4 | Firebird e Interbase | 4 | 28-10-2004 17:21:36 |
|