C++ 使用memcpy和begin()复制多维数组的子数组

C++ 使用memcpy和begin()复制多维数组的子数组,c++,multidimensional-array,memory-leaks,memcpy,sub-array,C++,Multidimensional Array,Memory Leaks,Memcpy,Sub Array,我试图使用memcy将更新后的数组A的子数组复制到数组B中。数组A和数组B的维数相同。进入数组A的数据的顺序是A.get_size(3)(这里我们称为维度N)。每次更新N将增加3(这意味着在维度N的排队中添加了3组数据)。我只需要B获得更新的数据(子数组),下一个副本将替换前3个。所以我想把数组A从(N-2)复制到B中就可以了 //initializing a new array B to obtain sub-array from A array B(A.get_size(0), A.get

我试图使用memcy将更新后的数组A的子数组复制到数组B中。数组A和数组B的维数相同。进入数组A的数据的顺序是A.get_size(3)(这里我们称为维度N)。每次更新N将增加3(这意味着在维度N的排队中添加了3组数据)。我只需要B获得更新的数据(子数组),下一个副本将替换前3个。所以我想把数组A从(N-2)复制到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)’
错误:调用“copy(std::complex*,const std::complex*,long unsigned int)”时没有匹配的函数

除了使用
std::copy
,还有其他想法吗?谢谢

使用
std::copy
c++
容器,而不是
memcpy
memcpy
在其他.cpp文件中工作。所以也许这不是主要的解决办法@RADARADEntAdvices对象,STD容器是内存模型会被MimcPy炸毁的非平凡C++类。在C++中使用<代码> MycPyIE()/Cuffic >通常是个坏主意。没有相关信息,几乎没有人能说什么。您需要提供一个最小但完整的示例供读者试用。使用
std::copy
c++
容器,而不是
memcpy
memcpy
在其他.cpp文件中工作。所以也许这不是主要的解决办法@RADARADEntAdvices对象,STD容器是内存模型会被MimcPy炸毁的非平凡C++类。在C++中使用<代码> MycPyIE()/Cuffic >通常是个坏主意。没有相关信息,几乎没有人能说什么。您需要提供一个最小但完整的示例,供读者试用。