C++ 期货和线程,运算符+;
我的代码有问题。 以前所有的东西都是编译的,但现在我不知道为什么会有一些编译错误C++ 期货和线程,运算符+;,c++,future,C++,Future,我的代码有问题。 以前所有的东西都是编译的,但现在我不知道为什么会有一些编译错误 double function (){ double total = 0; future<double> futures[n] ; for( int i = 0 ; i < m ; i = i + m/n){ futures[i%n] = futures[i%n] + async( launch::async, function_thread, i)
double function (){
double total = 0;
future<double> futures[n] ;
for( int i = 0 ; i < m ; i = i + m/n){
futures[i%n] = futures[i%n] + async( launch::async, function_thread, i);
}
for(int i = 0; i < n; i++){
total = futures[i].get() + total;
}
return total;
}
double函数(){
双倍合计=0;
期货[n];
对于(int i=0;i
错误如下:
error: no match for 'operator+' (operand types are 'std::future<double>' and 'std::future<double>')
67 | futures[i%n] = futures[i%n] + async( launch::async,function_thread, i);
错误:“运算符+”不匹配(操作数类型为“std::future”和“std::future”)
67 | futures[i%n]=futures[i%n]+异步(启动::异步,函数_线程,i);
我想将值存储在future[I%n]中,并将future[I%n]值加上另一个值,该值是由调用函数的I线程计算的。\u thread您不能添加future
s。为什么不把所有的未来的提前存储到向量中,然后迭代并调用.get()
并对结果进行求和?你试图使用这种自行车技术的目的是什么?我想不出任何编译器会允许您在这里尝试的操作。未来!=它的价值。职业训练局是一个打字错误。