Поэтому я сейчас работаю над встроенной платой (STM32) и, в частности, рассматриваю ограничения памяти, я стараюсь избегать тяжелых функций, в том числе выделения памяти. У меня есть 1×9 2D массив, который мне нужен reshape
в 3х3. Я нашел это онлайн, что это может быть сделано с помощью reinterpret_cast
но мне интересно, если это безопасный сделать это?
Ниже приведен пример кода, который использует reinterpret_cast
для изменения формы, а также нормальной работы массива, что я думаю, может быть альтернативой reinterpret_cast
, Что вы, ребята, предлагаете? проверьте этот код: https://repl.it/IIYv/20 ; оба имеют одинаковые выходы
#include <iostream>
int main() {
double matrix[1][9] = { {10, 20, 30, 40, 50, 60, 70, 80, 90} };//using reinterpret_cast
double (&reshapeMatrix)[3][3]=*reinterpret_cast<double(*)[3][3]>(matrix);
double newArray[3][3];int i, j;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
printf ("%f, ",reshapeMatrix[i][j]);
}
printf ("\n");
}
//using normal array operation
int r=0, c=0;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
newArray[i][j] = matrix[r][c];
c++;
}
}
printf ("\n\n\n");
for (i=0; i<3; i++){
for (j=0; j<3; j++){
printf ("%f, ",newArray[i][j]);
}
printf ("\n");
}}
Задача ещё не решена.
Других решений пока нет …