如何使用特征库定义带模板的Vector?

时间:2016-05-07 15:31:44

标签: eigen eigen3

我知道Eigen使用Matrix来表示向量,但对于模板化向量,我所知道的是使用像

这样的东西
Eigen::Matrix<T,3,1> v;

是否有类似的东西     Eigen::Vector<T,3>可以使用吗?

1 个答案:

答案 0 :(得分:1)

所有Eigen :: Vector类型仅仅是typedef。 C ++ 11之前的所有C ++标准都不支持模板化的typedef(又名别名),而Eigen的编写也支持旧的标准,而不是C ++ 11。

如果您使用的是C ++ 11,则可以定义自己的模板化矢量别名

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

然后按照您想要的方式使用

Vector<double, 10> vec;

顺便说一句,Eigen的矢量大小在2到4之间的typedef,即Eigen :: Vector2d,...,EigenVector4d。对于带有后缀f和整数i以及复数cdcf的浮点数,存在相同的typedef。