我正在尝试使用 memcy 将更新后的数组 A 的子数组复制到数组 B 中。A 和 B 数组的维数相同。进入数组 A 的数据按照 A.get_size(3) 的顺序(这里我们称之为维度 N)。每次更新 N 将增加 3(这意味着添加 3 组数据以维度 N 排队)。我只需要 B 来获取更新的数据(子数组),下一个副本将替换前 3 个。所以我猜从 (N-2) 开始将数组 A 复制到 B 可以完成这项工作。
//initializing a new array B to obtain sub-array from A
array B(A.get_size(0), A.get_size(1), A.get_size(2), 3, A.get_size(4));
//Get the forth dimension N
N=A.get_size(3);
//copy the sub-array of A (from N-2 to N) into B(from 1 to 3 in dimension N)
memcpy(B.begin()+A.get_size(0)*A.get_size(1)*A.get_size(2)*(1)*A.get_size(4), A.begin()+A.get_size(0)*A.get_size(1)*A.get_size(2)*(N-2)*A.get_size(4), sizeof(T)*(A.get_size(0)*A.get_size(1)*A.get_size(2)*A.get_size(4)));
但是,这可以复制元素的数量,但不能复制里面的数据值。这是否意味着它会发生内存泄漏?我应该如何进行更改?谢谢!
编辑:感谢评论,我尝试使用std::copy
而不是memcpy
,但这在这种情况下不起作用,因为数组 A 包含复杂的浮点数。编译时出现此错误,
error: no matching function for call to ‘copy(std::complex<float>*, const std::complex<float>*, long unsigned int)’
除了使用之外还有什么想法std::copy
吗?谢谢!