16

假设我们有两个数组:

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

我们想将 10 个元素从 matrix[80:89] 复制到使用memcpy.

有什么快速的解决方案吗?

4

3 回答 3

25

使用起来更简单std::copy

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

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

于 2010-10-10T21:14:26.463 回答
16
memcpy(array, &matrix[80], 10*sizeof(double));

但是(因为您说 C++)使用 C++ 函数而不是旧的 C ,您将拥有更好的类型安全性memcpy

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

请注意,该函数采用您要使用的范围的“过去结束”的指针。大多数 STL 函数都以这种方式工作。

于 2010-10-10T21:16:22.387 回答
11
memcpy(array, matrix+80, sizeof(double) * 10);
于 2010-10-10T21:13:10.630 回答