я наткнулся на этот бит кода (source):Trouble Понимание одного варианта выполнения динамического массива массивов
// memory allocation
float *temp = new float[(order-1)*(order-1)];
float **minor = new float*[order-1];
for(int i=0;i<order-1;i++)
minor[i] = temp+(i*(order-1));
, и я действительно не понимаю. Что пытается сделать автор этого кода? (Да, я знаю, что он пытается сделать программу, чтобы найти обратную матрицу, но я не вижу, как работает этот бит кода.)
Я думаю, что это эквивалентно:
float **minor;
minor = new float*[order-1];
for(int i=0;i<order-1;i++)
minor[i] = new float[(order-1)*(order-1)];
потому что +(i*(order-1))
кажется, что он только туда, чтобы двигаться вперед, что по существу является шириной ячейки памяти. Я уверен, что я не мог ошибаться в этой гипотезе. Несмотря на мою неправильную теорию, я не могу найти объяснения этому нигде, поэтому глубокое объяснение будет высоко оценено. Также было бы полезно пояснить, как реализовать это с вектором векторов поплавков.
* Что автор этого кода пытается выполнить? * - Чтобы запутать читателя, и он, кажется, преуспевает :-). –