2014-12-17 2 views
1

У меня есть зЬе матрицы А такие, какИзменение размера матрицы на двойной массив

std::vector<std::vector<double> > A(9,std::vector<double>9); 

и вычислить обратный мне нужно, чтобы определить его как двойник размера [1 * 81], такие как

double newA[1*81]; 

есть функция, подобная изменить размер, что я могу сделать это преобразование из матрицы в double без цикла?

Заранее спасибо.

+3

Это * не * разумный тип для матрицы в C++. Если вы хотите просто сохранить свои собственные функции индексирования, но сохраните плотные матрицы в линейном хранилище (например, просто один 'std :: vector ' например). Таким образом, вам также не нужно много делать для преобразования ('v.data()'). – filmor

ответ

2

Нет, вы не можете избежать цикла.

Существует различие в структуре памяти между vector<double> и double[]. A vector реализован как указатель на некоторые данные, где-то еще в памяти, а double[9] непосредственно использует пространство из 9 двухместных.

Это означает, что значения в вашем vector<vector> не обязательно смежны в памяти, в то время как они находятся в double[] или даже в double[][].

+0

Спасибо большое :) – Noname

Смежные вопросы