根据本征文件,Vector是 Matrix 的 typedef,并且 Matrix 有一个构造函数带有以下签名:
Matrix (const Scalar *data)
构造一个固定大小的矩阵,该矩阵使用从 data 开始的系数进行初始化。
And 矢量参考定义了std::vector::data
as:
std::vector::data
T* data();
const T* data() const;
返回指向用作元素存储的底层数组的指针。
指针的范围是这样的[data(); data() + size())
总是一个
有效范围,即使容器是空的。
因此,您可以将向量的数据作为Vector3d
构造函数参数:
Eigen::Vector3d v2(v1.data());
另外,从 Eigen 3.2.8 开始,上述构造函数定义为:
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
inline Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>
::Matrix(const Scalar *data)
{
this->_set_noalias(Eigen::Map<const Matrix>(data));
}
正如你所看到的,它还使用Eigen::Map
正如 @ggael 和 @gongzhitaao 所指出的。