【问题标题】:std::tuple of const references?std:: const 引用的元组?
【发布时间】:2012-02-05 02:07:21
【问题描述】:

我有一个函数,它曾经被称为

void func(const A& v0, const A& v1, const A& v2);

为了清楚起见,我想将参数作为 3 元组传递。如果要避免任何额外的开销,正确的方法是什么?以下是最有效的吗?:

void func(std::tuple<const A&> v);

【问题讨论】:

  • 我还将元组作为 const 参考传递以提高效率
  • A 是多态的吗?他们三个经常一起使用吗?
  • @BartoszMilewski:不是多态的;经常一起使用。
  • A 实际包含哪些数据?

标签: c++ c++11 tuples pass-by-reference


【解决方案1】:

如果它们不是多态的并且经常一起使用(并且,我假设是创建的),那么为什么不将它们打包到一个值元组 std::tuple&lt;A, A, A&gt; 或命名结构中。您将通过 const 引用传递它。此解决方案没有性能开销,实际上可能更快。

其实,既然三个元素都是同一种类型,那为什么不用三个元素组成的数组A[3]呢?元组最适合异构类型。

【讨论】:

  • std::array&lt;A,3&gt;... 但在任何情况下,类型都应该被定义为一个友好的、可重构的名称。
  • @Potatoswatter:您可以将数组类型定义为友好名称。我不确定你所说的可重构是什么意思。能否提供元组和数组的代码示例?
猜你喜欢
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 2012-11-10
  • 2010-11-24
相关资源
最近更新 更多