Как определить вектор с шаблоном, используя библиотеку Eigen?

Я знаю, что Eigen использует Matrix для представления вектора, но для шаблонного вектора я знаю, что нужно использовать что-то вроде

Eigen::Matrix<T,3,1> v;

Есть ли что-то вроде Eigen::Vector<T,3> для использования?


person Adam Lee    schedule 07.05.2016    source источник


Ответы (1)


Все типы Eigen::Vector являются просто определениями типов. Все стандарты C++ до C++11 не поддерживают шаблонные typedefs (также известные как псевдонимы), а Eigen написан для поддержки более старых стандартов, чем C++11.

Если вы используете C++11, вы можете определить свой собственный шаблонный псевдоним Vector.

template <typename Type, int Size> using Vector = Eigen::Matrix<Type, Size, 1>;

а потом используй как хочешь

Vector<double, 10> vec;

Кстати, у Eigen есть определения типов для размеров векторов от 2 до 4, т. е. Eigen::Vector2d, ..., EigenVector4d. Те же определения типов существуют для чисел с плавающей запятой с суффиксом f и целым числом i, а также для комплексных чисел cd, cf.

person cassinaj    schedule 07.05.2016