Déjà, complex est un template, car on peut vouloir avoir des nombres complexes basés sur une représentation flottante, ou une représentation double (voire éventuellement d'autres représentations, mais ce n'est je crois pas supporté par tous les compilateurs).
Donc, pour utiliser ce type, il faut préciser : complex<double> ou complex<float> (et c'est probablement complex<double> qui a le plus de sens si tu hésites entre les eux.
Ensuite, pour gérer un tableau dynamique, il y a bien plus simple que ce que tu essayes de faire. La solution passe par vector, un autre template de la bibliothèque standard. Une retranscription directe de ton code donnerait :
1 2 3 4 5
| vector<vector<complex<double> > > Pixels; // Attention aus espaces entre '>'
for(int i=0 ; i<Hauteur+2 ; i++)
{
Pixels.push_back(vector<complex<double> (Largeur+2));
} |
On n'a pas l'air de beaucoup y gagner, mais la libération de la mémoire est alors effectuée automatiquement. Mais souvent, pour un tableau où chaque ligne a la même largeur, il est encore plus simple d'écrire :
1 2 3
| vector<complex<double> > Pixels(Hauteur+2 * Largeur+2);
// Pour accéder au Pixel i,j
Pixels [i * ( Largeur+2) + j] = ...; |
Je te conseille grandement de te documenter sur vector, c'est un miracle en terme d'économie de bugs !
Partager