通过引用传递向量内联

Posted

技术标签:

【中文标题】通过引用传递向量内联【英文标题】:Pass by Reference an vector inline 【发布时间】:2020-07-06 06:19:45 【问题描述】:

我正在尝试通过引用传递一个向量,该向量在函数内部被修改(比如说,类似于对向量进行排序)

void dummy(vector<int> &v)  sort(v.begin(), v.end()); 

上述方法仅在像这样创建向量并传递引用时才有效,这是预期的。

int main() 
  vector<int> v = 1, 2, 3;
  dummy(v);

我想弄清楚,是否有内联的方式来做到这一点?通常,如果向量没有被修改,我们可以这样做 -

int main() 
  dummy(1,2,3)

但是,当向量被修改时,它会引发编译错误 - 无法将“std::vector&”类型的非常量左值引用绑定到“std::vector。那么,有没有办法将向量的引用内联发送?

【问题讨论】:

【参考方案1】:

在这种情况下,您应该为右值引用编写重载,即:

void dummy(vector<int>&&);

这将与传递给函数的临时对象一起使用。

【讨论】:

【参考方案2】:

如果向量没有被修改,您可以使用const 来引用:

void dummy(const vector<int> &v)  .. 

dummy(vector<int>1, 2, 3);

你也可以使用通用引用&amp;&amp;

void dummy(vector<int> &&v)  .. 

【讨论】:

以上是关于通过引用传递向量内联的主要内容,如果未能解决你的问题,请参考以下文章

C++:试图理解通过引用传递向量

通过引用传递向量的 typedef 向量

通过引用传递向量然后调用清除

通过引用返回通过引用传递的向量的实用程序

通过引用传递向量 C++

在 Mac OS X 上,通过引用传递向量还是通过值传递向量更有效?