我有一个基于范围的 for 循环,如下所示:
for (auto& individual : population){
individual.metadata.distance = distance(individual.tour);
}
现在我必须将其重写为普通的 for 循环,以便使用 OpenMP 并行化我的程序,我有以下内容:
int length = population.size();
#pragma omp parallel for
for (int i = 0; i < length; i++){
auto individual =* (population.begin() + i);
individual.metadata.distance = distance(individual.tour);
}
但是,输出变得不正确,所以我想知道这是否是重写基于范围的 for 循环的方法。有人有什么想法吗?
提前致谢!
最佳答案
auto individual =* (population.begin() + i);
这会生成一个拷贝,但似乎不是您想要的。我想你的意思是:
auto& individual =* (population.begin() + i);
关于C++如何将基于范围的for循环重写为普通循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29222371/