Pb d'optimisation

Signaler
Messages postés
1
Date d'inscription
mardi 6 janvier 2004
Statut
Membre
Dernière intervention
8 juin 2005
-
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
-
Bonjour à tous


Je recherche la méthode la plus rapide pour copier un tableau 3D dans
un tableau 1D, en évitant bien sur de passer par un triple boucle. Peut
être que la fonction memcpy peut m'aider mais je n'ai pas réussi à
l'exploiter efficacement. Quelqu'un peut il m'aider ?
dof

1 réponse

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
3
alors je suis pas sûr de bien comprendre:

// par exemple:

int tab3D[A][B][C];// alloué statiquement: i.e: pas de malloc ni new

int tab1D[A*B*C];


memcpy((void *)tab1D,(void *)tab3D,sizeof(tab3D));



si le tableau 3D est alloué dynamiquement il faut faire 2 boucles:



int ***tab3D;

tab3D=new int**[A];

for(int i=0;i<A;i++)

{

tab3D[i]=new int *[B];

for(int j=0;j<B;j++)

{

tab3D[i][j]=new int[C];

}

}



int *tab1D=new int[A*B*C];

int *p=tab1D;



for(int i=0;i<A;i++)


{

for(int j=0;j<B;j++)

{

memcpy((void *)tab1D,(void *)tab[i][j],sizeof(int)*C);

tab1D+=C;

}

}





çà devrait marcher(j'ai pas testé)
A m a u r y