fun*_*man 2 c++ matrix triangular dynamic-allocation
我需要为一个代表三角矩阵的非常大的数组分配内存.我写了以下代码:
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];
Run Code Online (Sandbox Code Playgroud)
问题是这样做所需的时间(分配内存)随着矩阵大小的增加而迅速增加.有谁知道这个问题更好的解决方案?
谢谢.
分配一维数组并将索引转换为下标,反之亦然.与分配相比,一个O(N)分配应该快得多.
编辑
具体来说,只需分配N(N+1)/2元素,当您想要访问[r][c]原始元素时,只需访问即可[r*(r+1)/2 + c].