gpt4 book ai didi

c++ - 避免复制重复使用的特征 block

转载 作者:行者123 更新时间:2023-11-28 01:16:02 25 4
gpt4 key购买 nike

是否可以不复制到下面第 3 行的 bounds 中?

Eigen::VectorXd all_bounds(100);
Eigen::VectorXd values(10);
Eigen::VectorXd bounds = all_bounds.segment(20, 10);
values = values.cwiseMin(bounds);
values = values.cwiseMax(-bounds);

我能想到的一种方法是将 bounds.segment(20, 10) 内联到 cwise{Min,Max}() 调用中,但它会重复代码cwise{Min,Max} 调用并在获取边界的表达式比上面的玩具示例长时变得丑陋。

最佳答案

使用 C++11,您只需编写

auto bounds = all_bounds.segment(20, 10);

否则,或者如果您想避免(与 Eigen 结合)潜在的危险 auto关键字,你可以这样写

Eigen::Ref<Eigen::VectorXd> bounds = all_bounds.segment(20, 10);

如果all_bounds是只读的,使用 Eigen::Ref<const Eigen::VectorXd>相反。

Godbolt 链接:https://godbolt.org/z/OzY759


请注意,在您的示例中,valuesall_bounds没有初始化(我假设只是为了让示例保持简短)。

关于c++ - 避免复制重复使用的特征 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58683726/

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