是否可以将某些功能作为memcpy从1D阵列复制到3D?
现在我正在使用一种缓慢的方法:
for(int loop1 = 0; loop1 < numberAgents; loop1++)
for(int loop2 = 0; loop2 < fieldWidth; loop2++)
for(int loop3 = 0; loop3 < fieldWidth; loop3++)
potentialField[loop1][loop2][loop3] = cpuPotentialField[loop1 * fieldWidth * fieldWidth + loop2 * fieldWidth + loop3];
这不起作用:
memPotentialField = numberAgents * fieldWidth * fieldWidth * sizeof(float);
memcpy(potentialField, cpuPotentialField, memPotentialField);
最佳答案
多维数组按行存储(第8.3.4 / 9节),因此本质上您使用memcpy
的方法很好(因为浮点数是POD)。
memcpy(&potentialField[0][0][0], cpuPotentialField,
sizeof(potentialField)/sizeof(***potentialField));
使用std::copy更好,因为它也适用于非PODS。所以我会写
std::copy(&potentialField[0][0][0],
&potentialField[0][0][0] + sizeof(potentialField)/sizeof(potentialField[0][0][0]),
cpuPotentialField);
关于c++ - 快速将1D阵列复制到cpp中的3D阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13556075/