如何在 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_v
是 vec.v
的副本,而不是它的引用。两种方法可以帮助您:
std::vector<int>& returned_v = vec.vector_reference();
std::vector<int> returned_v = std::move(vec.vector_reference()); //C++ 11
我想通过引用使 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_v
是 vec.v
的副本,而不是它的引用。两种方法可以帮助您:
std::vector<int>& returned_v = vec.vector_reference();
std::vector<int> returned_v = std::move(vec.vector_reference()); //C++ 11