我有一个需要返回一对std向量(不同维度)的函数。我也可以返回一对或元组。我想要避免的是复制整个向量只是为了返回它。
像这样的代码:
return make_pair(vec1, vec2_diffDim);
复制载体还是使用参考?
答案 0 :(得分:1)
假设vec1
和vec2_diffDim
是您的函数的本地变量,您应该使用make_pair(std::move(vec1), std::move(vec2_diffDim))
。 make_pair<T1,T2>
接受类型T1
和T2
的通用引用。但是,由于只有rvalues可以绑定到rvalue引用重载,make_pair(vec1, vec2_diffDim)
将绑定到生成两个参数副本的版本。可以省略返回的pair
的副本。因此,您可以保证它至少会被移动。