传递和转移向量及其数据所有权的最佳方式是什么?
在理想的世界中,它会像这样工作:
std::vector<int>& SpitAVector(int input)
{
std::vector<int> result;
result.push_back(input);
return result;
}
int main()
{
std::vector<int> myvec;
myvec = SpitAVector(60);
std::cout << (int)myvec[0] << std::endl; //Outputs 60
}
这不起作用,因为我正在返回对局部变量的引用。
是否可以使用boost::unique_ptr
或boost::shared_ptr
处理这个向量输出?(不能使用 C++11 的 unique_ptr!)