gpt4 book ai didi

c++ - 在cpp中将一维数组快速复制到三维数组

转载 作者:行者123 更新时间:2023-11-30 02:02:09 25 4
gpt4 key购买 nike

是否可以使用像 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 的方法很好(因为 float 是 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++ - 在cpp中将一维数组快速复制到三维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com