2 つの配列があるとします。
double *matrix=new double[100];
double *array=new double[10];
を使用して、matrix[80:89] から配列に 10 個の要素をコピーし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);
この関数は、使用する範囲の「最後を 1 つ過ぎた」ポインタを取ることに注意してください。ほとんどの STL 関数はこのように機能します。
memcpy(array, matrix+80, sizeof(double) * 10);