【问题标题】: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。那么,有没有办法将向量的引用内联发送?

【问题讨论】:

    标签: c++ vector c++17


    【解决方案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) { .. }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 2015-04-24
        • 2015-12-18
        • 2013-07-07
        • 1970-01-01
        相关资源
        最近更新 更多