gpt4 book ai didi

c++ - 采用 VectorXf 并可以修改其值的函数

转载 作者:行者123 更新时间:2023-12-05 01:50:12 27 4
gpt4 key购买 nike

我想了解如何操作特征向量/矩阵。我想实现最小二乘高斯牛顿算法(因此我学习使用 Eigen 库)。我有一个 1x6 的参数 vector ,每次迭代都需要更新它们。现在,我只想弄清楚函数如何将 vector 作为参数并更改其值...

Eigen::VectorXf betas = Eigen::VectorXf::Zero(6);

void SomeFunc(const Eigen::VectorXf& v){ // as per the Eigen guide, one must pass as const
v(0) = 5; // error: expression must be a modifiable lvalue
return;
}

int main()
{
betas(5) = 5.f; // works
SomeFunc(&betas);
std::cout << "Hello World" << std::endl;
std::cout << betas(0) << "\t" << betas(5) << std::endl;
}

我的问题是:如何让一个函数接受一个 vector 并修改它的值?

编辑:Eigen guide

最佳答案

正如文档所说:

Functions taking writable (non-const) parameters must take const references and cast away constness within the function body.


How would you make a function take a vector and modify its values?

您可以使用 const_cast 如下所示:

Eigen::VectorXf betas = Eigen::VectorXf::Zero(6);

void SomeFunc(const Eigen::VectorXf& v){ // as per the Eigen guide, one must pass as const
const_cast<Eigen::VectorXf&>(v)(0) = 5;//cons_cast used here
return;
}

int main()
{
betas(5) = 5.f; // works
SomeFunc(betas);
std::cout << "Hello World" << std::endl;
std::cout << betas(0) << "\t" << betas(5) << std::endl;
}

关于c++ - 采用 VectorXf 并可以修改其值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73320722/

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