我想在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::vectorint时,您将使用

std::vector<int> xs(size, init_value);

同样,当您处理std::vectorVectorXd时,应该是这样的。
std::vector<VectorXd> xs(max_iter+1, VectorXd(b->rows()));

它必须是< >之间的类型名称,但是您使用的是VectorXd(b->rows())对象。

07-28 02:18
查看更多