假设我们有两个数组:
double *matrix=new double[100];
double *array=new double[10];
我们希望使用memcpy
将矩阵[80:89]中的10个元素复制到数组中。
任何快速解决方案?
答案 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);