J'ai besoin d'allouer de la mémoire pour un très grand tableau qui représente une matrice triangulaire. Je écrit le code suivant:Comment accélérer l'allocation de mémoire pour la matrice triangulaire 2D en C++?
const int max_number_of_particles=20000;
float **dis_vec;
dis_vec = new float **[max_number_of_particles];
for (i = 0; i<max_number_of_particles; i++)
dis_vec[i] = new float *[i];
for (i = 0; i<max_number_of_particles; i++)
for (j = 0; j<i; j++)
dis_vec[i][j] = new float[2];
Le problème est que le temps nécessaire pour le faire (pour allouer la mémoire) augmente rapidement avec la taille croissante de la matrice. Est-ce que quelqu'un sait une meilleure solution pour ce problème?
Merci.
Etes-vous sûr que vous avez besoin de tous les éléments alloués? Vous pouvez les initialiser lorsque vous les utilisez pour la première fois; cette utilisation peut prendre plus de temps que l'allocation de toute façon. –
n'est pas 'dis_vec [i] [j]' un 'float', plutôt qu'un' float * '? et l'affectation dans la première boucle ne devrait-elle pas être 'dis_vec [i] = new float * [i + 1]'? – lijie