gpt4 book ai didi

c++ - Eigen c++ 中的逗号初始化问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:31 24 4
gpt4 key购买 nike

我有一个问题,Eigen 教程 here 中指示的逗号初始化似乎没有用。

我有一个系统,其中有一个初始化 vector 的主要部分:

主要内容:

VectorXd v;

和一个函数:

double useVector(VectorXd &v) {
dataI = model_.find();
v << model_[dataI].v[0], model_[dataI].v[1], model_[dataI].v[2], 1;
return dataI;
}

注意:函数是这样使用的:

double distance = useVector(v);

现在 model_[dataI].v 是一个 double[3],它确实可以正常工作。我的理解是,这与此相同:

VectorXd v;
v << 1, 2, 3,
4, 5, 6,
7, 8, 9;

但它不起作用,代码在函数的逗号初始化阶段出现段错误。

请注意,这是可行的:

v.resize(4)
v[0] = model_[dataI].v[0];
v[1] = model_[dataI].v[1];
v[2] = model_[dataI].v[2];
v[3] = 1;

只要初始化v,像这样:

VectorXd v(4);

这立即让我想知道调整大小的意义(但如果我把它拿走,它又会出现段错误)。

有人知道为什么会这样吗?

最佳答案

是的,在使用逗号初始化器之前, vector v 必须调整到合适的大小。

关于c++ - Eigen c++ 中的逗号初始化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com