C ++返回两个大的std :: vector

时间:2014-07-09 02:22:55

标签: c++11 return-value

我有一个需要返回一对std向量(不同维度)的函数。我也可以返回一对或元组。我想要避免的是复制整个向量只是为了返回它。

像这样的代码:

return make_pair(vec1, vec2_diffDim);

复制载体还是使用参考?

1 个答案:

答案 0 :(得分:1)

假设vec1vec2_diffDim是您的函数的本地变量,您应该使用make_pair(std::move(vec1), std::move(vec2_diffDim))make_pair<T1,T2>接受类型T1T2的通用引用。但是,由于只有rvalues可以绑定到rvalue引用重载,make_pair(vec1, vec2_diffDim)将绑定到生成两个参数副本的版本。可以省略返回的pair的副本。因此,您可以保证它至少会被移动。