16

2 つの配列があるとします。

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

を使用して、matrix[80:89] から配列に 10 個の要素をコピーし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);

この関数は、使用する範囲の「最後を 1 つ過ぎた」ポインタを取ることに注意してください。ほとんどの STL 関数はこのように機能します。

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