快速复制数组的方法

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中的相应元素,但我无法弄清楚如何使指针执行此操作.

任何帮助将非常感激!

Sun*_*ht0 7

由于数组的内存大小是固定的,因此您只需将内存块从一个指针复制到另一个指针即可.它没有比这更快.

c/c++你可以使用memcpy,如果这是你所使用的语言.每种语言都有相同的东西.

编辑:既然你确认使用c我可以得到更详细的:

memcpy(array_new,array,sizeof(VARIABLE_TYPE_of_ARRAY_ELEMENT)*N_a*N_b);
Run Code Online (Sandbox Code Playgroud)