gpt4 book ai didi

c++ - 如何使用没有返回值的 (eigen) unaryExpr 和 lambda 函数?

转载 作者:行者123 更新时间:2023-11-28 04:33:31 31 4
gpt4 key购买 nike

这是我的示例代码:

using namespace Eigen;
VectorXi a = VectorXi::Random(10);
VectorXi b = VectorXi::Random(10);
VectorXi c;
c << 0, 2, 5, 7;
c.unaryExpr([&](int i) { a[i] = b[i]; }); // This will not work
c.unaryExpr([&](int i) { a[i] = b[i]; return 0; }); // This works

我想使用存储在 c 中的索引将元素从 b 复制到 a。这是在 eigen unaryExpr 中使用 lambda 函数的正确方法吗?如何避免代码“return 0;”因为我不会退回任何东西。

我正在使用 g++ 8.1.0

谢谢

最佳答案

您正在使用函数式编程风格来产生纯粹的副作用,这不是很优雅,而且不是这样的unaryExpr应该被使用。我建议 std::vector<int>对于 c和一个 for 循环让你的意图更清晰:

std::vector<int> c = {0, 2, 5, 7};
for(auto i:c) a[i] = b[i];

或者使用Eigen的头部:

a(c) = b(c);

c VectorXistd::vector<int>或者其他...

关于c++ - 如何使用没有返回值的 (eigen) unaryExpr 和 lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52193865/

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