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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++返回两个大的std :: vector相关的知识,希望对你有一定的参考价值。

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

会像这样的代码:

return make_pair(vec1, vec2_diffDim);

复制载体还是使用参考?

答案

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

以上是关于C ++返回两个大的std :: vector的主要内容,如果未能解决你的问题,请参考以下文章

c++11 使用 std::map 作为返回值

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

当函数返回它时,C++ 向量实例是可操作的