Пользовательский тип как скаляр матрицы в библиотеке C ++ Armadillo

Есть ли способ использовать определяемый пользователем скалярный тип внутри матрицы в библиотеке линейной алгебры Armadillo? Даже типа int64_t не работает. Это простое объявление arma::Mat<int64_t> mat; вызывает ошибку компиляции:

armadillo_bits \ arma_static_check.hpp (23): ошибка C2118: отрицательный индекс armadillo_bits \ arma_static_check.hpp (21): при компиляции функции-члена шаблона класса 'void arma :: arma_type_check_cxx1998 :: apply (void)' armadillo_bits \ mat_meat (34) : см. ссылку на создание экземпляра шаблона функции 'void arma :: arma_type_check_cxx1998 :: apply (void)', который компилируется armadillo_bits \ mat_meat.hpp (34): см. ссылку на создание экземпляра шаблона класса 'arma :: arma_type_check_cxx1998', который скомпилирован armadillo_bits \ mat_meat (17): при компиляции шаблона класса функция-член 'arma :: Mat :: ~ Mat (void)' main.cpp (156): см. Ссылку на создание экземпляра шаблона функции 'arma :: Mat :: ~ Mat (void)', являющееся скомпилированный main.cpp (156): см. ссылку на компилируемый экземпляр шаблона класса 'arma :: Mat'

Мне нужна матрица с таким настраиваемым типом не для математических операций, а просто для удобных 2-мерных массивов с операциями вставки строки / столбца, и я не хочу связывать другую библиотеку только для этих операций. Армадилло уже используется в моем проекте.


person Yury    schedule 05.02.2015    source источник
comment
Чтобы включить 64-битные целые числа, используйте компилятор C ++ 11 или определите ARMA_64BIT_WORD перед включением заголовка Armadillo. В противном случае вручную отредактируйте include/armadillo_bits/config.hpp. Пояснения к параметрам приведены в документации.   -  person mtall    schedule 05.02.2015
comment
Спасибо, но как использовать классы, определенные пользователем? Like arma :: Mat ‹MyLongDouble› mat;   -  person Yury    schedule 05.02.2015


Ответы (1)


Для матрицы целых чисел Armadillo использует следующие типы:

umat     =      Mat<uword>
imat     =      Mat<sword> 
person cfcm    schedule 11.09.2015