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)
returned_v是从 的返回值中复制的独立对象vec.vector_reference()。您也应该将其声明为参考。
std::vector<int>& returned_v = vec.vector_reference();
Run Code Online (Sandbox Code Playgroud)