tha*_*302 2 c arrays optimization pointers multidimensional-array
所以在我正在做的每次迭代结束时,我想让我的数组等于我的新数组(我称之为array_new).我希望数组的每个元素都采用与array_new相同的值,但我有兴趣尽可能快地获取代码,因此在当前代码执行的情况下,逐个元素地复制所有元素不是一个选项:
for(i=0;i<N_a;i++) {
for(j=0;j<N_b;j++) {
array[i][j] = array_new[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
这需要相当长的时间,因为我的N_a和N_b的值非常大.有没有办法简单地改变每个指向的内容,以便我可以更快地开始下一次迭代?我尝试过这样的事情
double *temp = *array;
*array = *array_new;
*array_new = temp;
Run Code Online (Sandbox Code Playgroud)
为了尝试避免缓慢的逐个元素复制过程,但它似乎不适合我.实际上,我正在努力实现的是,数组的每个元素都指向array_new中的相应元素,但我无法弄清楚如何使指针执行此操作.
任何帮助将非常感激!
由于数组的内存大小是固定的,因此您只需将内存块从一个指针复制到另一个指针即可.它没有比这更快.
在c/c++你可以使用memcpy,如果这是你所使用的语言.每种语言都有相同的东西.
编辑:既然你确认使用c我可以得到更详细的:
memcpy(array_new,array,sizeof(VARIABLE_TYPE_of_ARRAY_ELEMENT)*N_a*N_b);
Run Code Online (Sandbox Code Playgroud)