我需要爲代表三角矩陣的非常大的數組分配內存。 我寫了下面的代碼:如何加快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];
的問題是,要做到這一點(分配內存)所需的時間迅速用矩陣的大小增加而增加。有誰知道這個問題的更好的解決方案?
謝謝。
您確定需要分配所有元素嗎?你可以在初次使用時初始化它們;無論如何,這種使用可能比分配花費更多的時間。 – 2010-11-23 14:33:54
不是`dis_vec [i] [j]`a`float`,而不是`float *`?而不應該在第一個循環中的賦值是`dis_vec [i] = new float * [i + 1]`? – lijie 2010-11-23 14:37:54