Мне нужно инициализировать матрицу Armadillo массивом двойников. Я нашел этот конструктор в оригинальной документации:Armadillo и C++ - Инициализация матрицы с помощью 2D-массива
mat(*aux_mem, n_rows, n_cols, copy_aux_mem = true, strict = true)
, и я нашел вопрос об этом здесь на SO:
armadillo C++: matrix initialization from array
Проблема заключается в том, оказывается, что конструктор работает только для инициализации одномерными массивами, а не 2D. Если я пытаюсь его использовать так:
double **matrix = new double *[block_size];
for(int i = 0; i < block_size; i++) {
matrix[i] = new double[block_size];
}
arma::mat arma_matrix(&matrix[0][0], matrix_size, matrix_size, true, true);
cout << "am: " << arma_matrix[1][0] << endl;
Я получаю ошибку:
fined_grain:103/init_function: In function ‘void place_user_fn_103(ca::Context&, ca::TokenList<double>&)’:
fined_grain:103/init_function:61:42: error: invalid types ‘double[int]’ for array subscript
Итак, что идеальный способ для инициализации матрицы Arma с 2D-массив? Я предпочитаю самое быстрое решение, потому что мне нужно использовать большие матрицы.
@ user3670482 - в моем опыте, Библиотека ускорения матрицы довольно примитивна по сравнению с Armadillo – mtall
@ user3670482 К сожалению, я должен использовать Armadillo. Тем не менее, спасибо за ваш совет ;-) – Eenoku
@mtall Вы пробовали использовать таблицу Boost с шаблонами C++ 11? Возможно, вы с этим справитесь. –