传递和转移向量及其数据的所有权的最佳方法是什么?
在一个理想的世界中,它会像这样工作:
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
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我正在返回对局部变量的引用.
是否可以使用boost::unique_ptr或boost::shared_ptr处理此向量输出?(不能使用C++ 11的unique_ptr!)
传递和转移向量及其数据的所有权的最佳方法是什么?
按值返回向量.
在C++ 11或更高版本中,将移动返回值(如果需要),因此肯定不会有批量数据副本.
如果您遇到过去,请确保您符合返回值的复制省略标准.你的功能只有一个返回点.虽然不是必需的,但任何体面的编译器都会执行该优化.
是否可以使用boost :: unique_ptr或boost :: shared_ptr来处理此向量输出?
是的,但这会不必要地复杂化.只是按价值回报.
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |