C ++返回两个大的std :: vector
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++返回两个大的std :: vector相关的知识,希望对你有一定的参考价值。
我有一个函数需要返回一对std向量(不同的维度)。我也可以返回一对或元组。我想要避免的是复制整个向量只是为了返回它。
会像这样的代码:
return make_pair(vec1, vec2_diffDim);
复制载体还是使用参考?
答案
假设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
副本可以省略。所以,你保证它至少会被移动。
以上是关于C ++返回两个大的std :: vector的主要内容,如果未能解决你的问题,请参考以下文章
[C++11 多线程异步] --- std::promise/std::future
[C++11 多线程异步] --- std::promise/std::future
[C++11 多线程异步] --- std::promise/std::future