kir*_*off 8 c++ parallel-processing lambda ppl
我正在使用PPL和parallel_for语法来创建for循环.在capture子句中,我有3个变量,其中一个是类成员.由于capture子句中的变量中存在类成员,因此存在编译错误.但是,如果我在lambda体中有这个类成员,它也不会编译,并且声明的错误是封闭范围中的变量应该在capture子句中.如何进行?我应该事先将变量成员复制到局部变量,并将其传递给capture子句吗?
这是代码,使用formulaCommand类成员.
parallel_for (m_rowStart,m_rowEnd+1,[&functionEvaluation,varModel_,formulaCommand](int i)
{
MLEquationVariableModel model_(varModel_);
model_.addVariable("i", i);
model_.addVariable("j", 1);
MLEquationCommand* command_ = formulaCommand->duplicate(&model_);
double d = command_->execute().toDouble();
if(d==NO_VALUE)
{
functionEvaluation.local() = NO_VALUE;
}
else
{
functionEvaluation.local() += d;
}
delete command_;
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
您需要捕获this才能访问成员变量(请记住这formulaCommand相当于this->formulaCommand).
[&functionEvaluation, varModel_, this](int i) { ... }
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,您应该使用智能指针(unique_ptr<MLEquationCommand>)而不是手动delete处理原始指针command_.)
| 归档时间: |
|
| 查看次数: |
4125 次 |
| 最近记录: |