Использование memcpy для копирования ряда элементов из массива
Скажем, у нас есть два массива:
double *matrix=new double[100];
double *array=new double[10];
И мы хотим скопировать 10 элементов из матрицы [80:89] в массив с помощью memcpy
.
Любые быстрые решения?
Ответы
Ответ 1
Проще использовать std::copy
:
std::copy(matrix + 80, matrix + 90, array);
Это чище, потому что вам нужно указать только диапазон элементов, которые нужно скопировать, а не количество байтов. Кроме того, он работает для всех типов, которые могут быть скопированы, а не только типов POD.
Ответ 2
memcpy(array, &matrix[80], 10*sizeof(double));
Но (так как вы говорите С++) у вас будет лучше безопасность типа с использованием функции С++, а не старой C memcpy
:
#include <algorithm>
std::copy(&matrix[80], &matrix[90], array);
Обратите внимание, что функция принимает указатель "один-конец-конец" диапазона, который вы хотите использовать. Большинство функций STL работают таким образом.
Ответ 3
memcpy(array, matrix+80, sizeof(double) * 10);