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

dol*_*gom 1 c++ vector pass-by-reference

我想制作通过引用返回向量的函数。但是返回的 vector( 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;
}
Run Code Online (Sandbox Code Playgroud)

son*_*yao 6

returned_v是从 的返回值中复制的独立对象vec.vector_reference()。您也应该将其声明为参考。

std::vector<int>& returned_v = vec.vector_reference();
Run Code Online (Sandbox Code Playgroud)