【发布时间】:2014-02-03 15:12:32
【问题描述】:
Eigen 引入了 Ref 类来编写以 Eigen 对象作为参数的函数,而无需使用不必要的临时变量,当不需要编写模板函数时。可以阅读此here。
当进一步搜索互联网时,我发现了几个使用 Ref 类的不同参数声明。在 Eigen 文档中,他们在第一个示例中使用 const Eigen::Ref<const Eigen::MatrixXf>& 作为只读参数。在第二个示例中,Eigen::Ref<Eigen::MatrixXd> 用于读写参数,但这里const Eigen::Ref<const Eigen::MatrixXd> 用于只读参数(无参考)。所以我的问题是:
以下声明有什么区别,什么时候使用?`
const Eigen::Ref<const Eigen::MatrixXd>&const Eigen::Ref<const Eigen::MatrixXd>const Eigen::Ref<Eigen::MatrixXd>&const Eigen::Ref<Eigen::MatrixXd>Eigen::Ref<const Eigen::MatrixXd>&Eigen::Ref<const Eigen::MatrixXd>Eigen::Ref<Eigen::MatrixXd>&Eigen::Ref<Eigen::MatrixXd>
为了完整起见,我列出了 const 用法和引用的所有可能组合。
【问题讨论】:
-
就我个人而言,我会将
const Eigen::Ref<const Eigen::MatrixXd>用于只读参数,Eigen::Ref<Eigen::MatrixXd>用于读写参数。但我不确定参考 (&)。
标签: c++ parameters pass-by-reference eigen eigen3