首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正确使用Eigen::Ref<>类

正确使用Eigen::Ref<>类
EN

Stack Overflow用户
提问于 2014-01-15 08:36:13
回答 1查看 10.9K关注 0票数 41

在不需要编写模板函数的情况下,引入了Ref<>类来编写以特征对象为参数的函数,而不需要使用不必要的临时器。人们可以读到这个这里

在进一步搜索internet时,我使用Ref<>类找到了几个不同的参数声明。在本征文档中,他们使用const Eigen::Ref<const Eigen::MatrixXf>&作为第一个示例中的只读参数。在第二个示例中,为读和写参数引入了Eigen::Ref<Eigen::MatrixXd>,但在这里,const Eigen::Ref<const Eigen::MatrixXd>用于只读参数(没有引用)。所以我的问题是:

以下声明与何时使用哪一种声明有什么区别?

  1. const Eigen::Ref<const Eigen::MatrixXd>&
  2. const Eigen::Ref<const Eigen::MatrixXd>
  3. const Eigen::Ref<Eigen::MatrixXd>&
  4. const Eigen::Ref<Eigen::MatrixXd>
  5. Eigen::Ref<const Eigen::MatrixXd>&
  6. Eigen::Ref<const Eigen::MatrixXd>
  7. Eigen::Ref<Eigen::MatrixXd>&
  8. Eigen::Ref<Eigen::MatrixXd>

为了完整起见,我列出了const用法和引用的所有可能组合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 13:10:27

通常,使用非const引用(如Ref<T>& )从来都不是一个好主意,因为只有当调用方手头有一个Ref<T>对象时,这才能工作。这丢弃了5和7。

案例3和4没有意义,而且它们一般不会编译。

然后,const Ref<const T>const Ref<const T>&之间没有太大的区别,因为函数不太可能是用现有的Ref<const T>对象调用的,因此在大多数情况下都必须创建Ref<const T>。尽管如此,我们仍然可以推荐1比2或6。

因此,总之,我们可以推荐Ref<T>作为可写引用,const Ref<const T>&推荐用于const引用。

如果您希望通过使用Ref<const T>调用Ref构造函数来更改所引用的矩阵(而不是其内容),则选项6 安置新可能仍然很有趣。

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21132538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档