通过引用传递向量内联
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);
你也可以使用通用引用&&
:
void dummy(vector<int> &&v) ..
【讨论】:
以上是关于通过引用传递向量内联的主要内容,如果未能解决你的问题,请参考以下文章