삼각형 행렬을 나타내는 매우 큰 배열에 메모리를 할당해야합니다. 나는 다음과 같은 코드를 작성 :C++에서 2D 삼각 행렬에 대한 메모리 할당 속도를 높이려면 어떻게해야합니까?
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];
문제는 그것 (메모리 할당)을 수행하는 데 필요한 시간이 빨리 행렬의 크기 증가에 따라 증가한다는 것이다. 누구든지이 문제에 대한 더 나은 해결책을 알고 있습니까?
감사합니다.
모든 요소를 할당해야합니까? 처음 사용할 때 초기화 할 수 있습니다. 어쨌든 할당보다 더 많은 시간이 걸릴 수 있습니다. –
은'float * '가 아니라'dis_vec [i] [j]''float'가 아니겠습니까? 첫 번째 루프의 할당은'dis_vec [i] = new float * [i + 1]'이 아니어야합니까? – lijie