【发布时间】:2016-04-13 11:02:53
【问题描述】:
您好,我在 C++11 中使用 lambda 函数创建了一个未来向量。
vector<double> v = { 0, 1.1, 2.2, 3.3, 4.4, 5.5 };
auto K = [=](double z){
double y=0;
for (const auto x : v)
y += x*x*z;
return y;
};
vector<future<double>> VF;
for (double i : {1,2,3,4,5,6,7,8,9})
VF.push_back(async(K,i));
它运行成功,但是当我尝试通过 for_each 调用检索值时,我得到了一个我不理解的编译错误。
for_each(VF.begin(), VF.end(), [](future<double> x){cout << x.get() << " "; });
旧式for循环成功获取值:
for (int i = 0; i < VF.size(); i++)
cout << VF[i].get() << " ";
为什么我不能使用 for_each 函数?我正在使用 Visual Studio 2013 也尝试使用 INTEL (V16) 编译器。
【问题讨论】:
-
你不能复制期货。使用引用或存储 shared_future。