【发布时间】:2019-08-05 13:43:01
【问题描述】:
我需要将一个普通的双 C 数组转换为 VectorXd*。我发现 Map 类似乎可以完成这项工作,但有些东西我不明白。
class A {
private:
VectorXd *jpos_;
public:
int init( double *v, int len )
{
// Here I would like to assign v to jpos_ in an efficient way
// (something like a pointer assignment without allocation or vector iterations)
// Note that length of v is len
}
};
我尝试了以下方法,但它不起作用:
int A::init( double *v, int len )
{
jpos_ = &VectorXd::Map( v, len );
}
或
int A::init( double *v, int len )
{
jpos_ = &Map<VectorXd>( v, len );
}
怎么了? 谢谢。
伊曼纽尔
【问题讨论】:
-
为什么是 VectorXd* 而不是 VectorXd?
-
如果你想使用 Eigen::Map 进行映射,你的成员变量应该是 Map
类型而不是 VectorXd。 -
这只是一个例子:在实际代码中,我有一个 VectorXd*,我无法将其更改为 VectorXd
-
如果要保留VectorXd*,需要复制。