我想在VectorXd
中定义一个Eigen
数组,以下是我的代码
void function(VectorXd * b, ...)
{
[snippet]
vector<VectorXd(b->rows())> xs(max_iter+1);
[snippet]
}
因此,我想定义一个长度为
max_iter+1
的数组,并且数组中的每个元素都是一个3X1
VectorXd。但是在编译时,它返回以下错误:
/path/to/solutions.h:187: error: invalid type in declaration before '(' token
vector<VectorXd(b->rows())> xs(max_iter+1);
^
/path/to/solutions.h:187: error: 'b' cannot appear in a constant-expression
vector<VectorXd(b->rows())> xs(max_iter+1);
^
我应该怎么做才能解决这些错误?谢谢!
最佳答案
当您处理std::vector
的int
时,您将使用
std::vector<int> xs(size, init_value);
同样,当您处理
std::vector
的VectorXd
时,应该是这样的。std::vector<VectorXd> xs(max_iter+1, VectorXd(b->rows()));
它必须是
< >
之间的类型名称,但是您使用的是VectorXd(b->rows())
对象。