假设我们有两个数组:
double *matrix=new double[100];
double *array=new double[10];
我们想将 10 个元素从 matrix[80:89] 复制到使用memcpy
.
有什么快速的解决方案吗?
使用起来更简单std::copy
:
std::copy(matrix + 80, matrix + 90, array);
这更简洁,因为您只需指定要复制的元素范围,而不是字节数。此外,它适用于所有可以复制的类型,而不仅仅是 POD 类型。
memcpy(array, &matrix[80], 10*sizeof(double));
但是(因为您说 C++)使用 C++ 函数而不是旧的 C ,您将拥有更好的类型安全性memcpy
:
#include <algorithm>
std::copy(&matrix[80], &matrix[90], array);
请注意,该函数采用您要使用的范围的“过去结束”的指针。大多数 STL 函数都以这种方式工作。
memcpy(array, matrix+80, sizeof(double) * 10);