Xin chào, tôi đã tạo ra một vectơ tương lai trong C++ 11 sử dụng hàm lambda.vectơ tương lai trong C++ 11
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));
Nó hoạt động thành công nhưng khi tôi cố truy xuất giá trị qua cuộc gọi for_each, tôi đã nhận được lỗi biên dịch mà tôi không hiểu.
for_each(VF.begin(), VF.end(), [](future<double> x){cout << x.get() << " "; });
Các giá trị đã thu được thành công bởi một phong cách cũ cho vòng lặp:
for (int i = 0; i < VF.size(); i++)
cout << VF[i].get() << " ";
Tại sao tôi đã không thể sử dụng chức năng for_each? Tôi đã sử dụng Visual Studio 2013 cố gắng cũng là trình biên dịch INTEL (V16).
bạn không thể sao chép tương lai. sử dụng tham chiếu hoặc lưu trữ shared_future. –