C++ 将2D内存分配转换为1D向量的最佳方法
将2D内存分配转换为一维向量的最快方法是什么?现在,我使用嵌套循环通过一次引用每个值来实现。是否可以使用memcpy或copy来提高速度?我有以下资料:C++ 将2D内存分配转换为1D向量的最佳方法,c++,memory,vector,C++,Memory,Vector,将2D内存分配转换为一维向量的最快方法是什么?现在,我使用嵌套循环通过一次引用每个值来实现。是否可以使用memcpy或copy来提高速度?我有以下资料: Ipp32f* datamem = ippiMalloc_32f_C1(size0, size1, &(steps)); Ipp32f* datamem2 = ippiMalloc_32f_C1(size0, size1, &(steps)); s std::vector<double> result(2*siz
Ipp32f* datamem = ippiMalloc_32f_C1(size0, size1, &(steps));
Ipp32f* datamem2 = ippiMalloc_32f_C1(size0, size1, &(steps)); s
std::vector<double> result(2*size0*size1);
int count = 0;
for (int i = 0; i < 1; i++){
for (int j = 0; j < size0; j++){
for(int k = 0; k < size1; k++){
Ipp32f* pointer = (Ipp32f)((Ipp8u*)datamem + steps * k + sizeof(Ipp32f) * j);
result[count] = *pointer;
count++;
}
}
}
for (int i = 1; i < 2; i++){
for(int j = 0; j < size0; j++){
for(int k = 0; k < size1; k++){
Ipp32f* pointer = (Ipp32f)((Ipp8u*)datamem2 + step * k + sizeof(Ipp32f) * j);
result[count] = *pointer;
count++;
}
}
}
Ipp32f*datamem=ippiMalloc_32f_C1(尺寸0、尺寸1和(步骤));
Ipp32f*datamem2=ippiMalloc_32f_C1(尺寸0、尺寸1和(步骤));s
标准::矢量结果(2*size0*size1);
整数计数=0;
对于(int i=0;i<1;i++){
对于(int j=0;j
此代码创建一个向量,其中每个索引都由datamem和datamem2中的数字存储引用。有更好的方法吗?datamem的定义在哪里?似乎很重要。如果数组是真正的2D数组,那么它已经是1D数组了,因为2D数组连续存储数据,与1D数组没有什么不同。这意味着您需要发布这个2D数组是如何声明和/或构建的。我将def添加到datamemWhat is
ippiMalloc
?它是否在连续内存中创建数据?您可能可以使用return std::vector result(memory\u start,memory\u end+1)创建一个向量编码>并忘记所有这些循环。根据,内存被分配为一个块。连续内存始终可以被视为一维数组——您只需要知道如何访问该数组的开头和结尾。datamem
的定义在哪里?似乎很重要。如果数组是真正的2D数组,那么它已经是1D数组了,因为2D数组连续存储数据,与1D数组没有什么不同。这意味着您需要发布这个2D数组是如何声明和/或构建的。我将def添加到datamemWhat isippiMalloc
?它是否在连续内存中创建数据?您可能可以使用return std::vector result(memory\u start,memory\u end+1)创建一个向量编码>并忘记所有这些循环。根据,内存被分配为一个块。连续内存始终可以被视为一维数组——您只需要知道如何访问该数组的开头和结尾。