2つの配列があるとします。
double *matrix=new double[100];
double *array=new double[10];
そして、memcpy
を使用して、matrix [80:89]から配列に10個の要素をコピーします。
迅速な解決策はありますか?
std::copy
を使用する方が簡単です:
std::copy(matrix + 80, matrix + 90, array);
バイト数ではなく、コピーする要素の範囲を指定するだけでよいため、これはよりクリーンです。さらに、PODタイプだけでなく、コピーできるすべてのタイプで機能します。
memcpy(array, &matrix[80], 10*sizeof(double));
ただし、(C++と言っているので)古いC memcpy
よりもC++関数を使用すると型の安全性が向上します。
#include <algorithm>
std::copy(&matrix[80], &matrix[90], array);
この関数は、使用する範囲の「最後から1つ」のポインターを受け取ることに注意してください。ほとんどのSTL関数はこのように機能します。
memcpy(array, matrix+80, sizeof(double) * 10);