使用memcpy从数组中复制一系列元素

时间:2010-10-10 21:11:31

标签: c++ memcpy

假设我们有两个数组:

double *matrix=new double[100];
double *array=new double[10];

我们希望使用memcpy将矩阵[80:89]中的10个元素复制到数组中。

任何快速解决方案?

3 个答案:

答案 0 :(得分:22)

使用std::copy

更简单
std::copy(matrix + 80, matrix + 90, array);

这更清晰,因为您只需要指定要复制的元素范围,而不是字节数。此外,它适用于所有可以复制的类型,而不仅仅是POD类型。

答案 1 :(得分:15)

memcpy(array, &matrix[80], 10*sizeof(double));

但是(因为你说C ++)你将使用C ++函数而不是旧的C memcpy获得更好的类型安全性:

#include <algorithm>
std::copy(&matrix[80], &matrix[90], array);

请注意,该函数采用您想要使用的范围的“一个接一个”的指针。大多数STL函数都以这种方式工作。

答案 2 :(得分:10)

memcpy(array, matrix+80, sizeof(double) * 10);