如何在 C++ 中通过引用 return 向量

How can I return vector by reference in C++

我想通过引用使 returns 的函数成为向量。但是返回的向量(returned_v)与vec.v不同,而是一个复制的向量。这意味着向量按值返回。如何从 vector_reference() 获取引用向量?

class Vec {
  public:
    std::vector<int> v = {1, 2, 3};
    std::vector<int>& vector_reference() {
        return v;
    }
};

int main() {
    Vec vec;
    std::vector<int> returned_v = vec.vector_reference();
    returned_v.clear();
    std::cout << returned_v.size() << std::endl; // result: 0
    std::cout << vec.v.size() << std::endl; // result: 3

    return 0;
}

returned_v 是一个独立的对象,它从 vec.vector_reference() 的 return 值复制而来。您也应该将其声明为参考。

std::vector<int>& returned_v = vec.vector_reference();

函数vector_reference()中的引用是vec.v的引用。但是,returned_vvec.v 的副本,而不是它的引用。两种方法可以帮助您:

  1. std::vector<int>& returned_v = vec.vector_reference();

  2. std::vector<int> returned_v = std::move(vec.vector_reference()); //C++ 11