【发布时间】:2020-05-18 02:43:40
【问题描述】:
我的函数需要返回几个大容器。为了实现这一点,return 语句创建了一个由要返回的容器组成的元组。但是,根据我的测试(使用 Apple clang 版本 11.0.0,clang-1100.0.33.17),可能会在构建元组时制作副本。在调用函数中,返回的元组使用结构化绑定分配给多个变量。
如果我的函数只返回一个容器,则将使用 RVO,并且不会制作副本。当函数返回多个容器时,是否有类似的避免创建副本的好方法?
示例如下:
#include <tuple>
#include <vector>
using namespace std;
tuple<vector<int>, vector<double>> f(){
vector<int> a(1);
vector<double> b(1);
return tuple(a,b);
}
int main(){
auto [x, y] = f();
}
【问题讨论】: