Если размер определяется во время выполнения, проще всего использовать вектор
vector<double> SA_Array(size);
Теперь вы можете скопировать, поменять, изменить его размер и он будет действовать соответственно. Если вам нужен указатель на начало, вы можете сделать это с помощью &SA_Array[0]
. Если размер определен и исправлен во время компиляции, вы можете использовать boost :: array
boost::array<double, size> SA_Array;
Вы можете использовать его как массив, но также можете скопировать его и делать такие вещи, как SA_Array.begin()
, как с вектором. Если вам нужен указатель на начало, вы можете сделать это с помощью SA_Array.data()
или &SA_Array[0]
.
Существует способ использовать необработанные указатели, как вы, и копировать их вручную
double *SA_Array;
SA_Array = new double[size];
double *SA_Copy;
SA_Copy = new double[size];
std::copy(SA_Array, SA_Array + size, SA_Copy);
Но это громоздко, так как вам нужно будет запомнить delete[]
их, что вектор сделает все за вас.