C++11 C++;返回两个大的std::vector
我有一个函数,需要返回一对std向量(不同维度)。我还可以返回一对或元组。我要避免的是复制整个向量只是为了返回它 是否需要类似以下代码的内容:C++11 C++;返回两个大的std::vector,c++11,return-value,C++11,Return Value,我有一个函数,需要返回一对std向量(不同维度)。我还可以返回一对或元组。我要避免的是复制整个向量只是为了返回它 是否需要类似以下代码的内容: return make_pair(vec1, vec2_diffDim); 复制向量或它将使用引用?假设vec1和vec2\u diffDim是函数的局部变量,您应该使用make\u pair(std::move(vec1),std::move(vec2\u diffDim))make_pair接受类型为T1和T2的通用引用。但是,由于只有右值可以绑定
return make_pair(vec1, vec2_diffDim);
复制向量或它将使用引用?假设
vec1
和vec2\u diffDim
是函数的局部变量,您应该使用make\u pair(std::move(vec1),std::move(vec2\u diffDim))
make_pair
接受类型为T1
和T2
的通用引用。但是,由于只有右值可以绑定到右值引用重载,make\u pair(vec1,vec2\u diffDim)
将绑定到生成两个参数副本的版本。返回的对的副本可以省略。因此,您可以保证它至少会被移动。我建议探索返回make_pair(std::move(vec1)、std::move(vec2_diffDim))代码>。我不知道它是否适合您的情况,但您可以通过引用将向量传递到函数中,而不是返回它们。