OpenMP - итератор в цикле For - PullRequest
1 голос
/ 08 июня 2011
#pragma omp parallel for reduction(+ : numOfVecs)
for(itc=clus.begin() ; itc!=clus.end() ; itc++)
{
    numOfVecs += (*itc)->getNumOfVecs();

}

У меня есть пара кодов, подобных приведенному выше, где мне нужны итераторы в цикле.Но я получаю ошибку «неверный управляющий предикат».Есть ли способ преодолеть это?

Заранее спасибо


Кстати, я использую последние версии code :: blocks и mingw.Я новичок в этом, но я думаю, что они поддерживают openmp3.0 по умолчанию после -fopenmp.Используемый итератор - итератор списка.

1 Ответ

1 голос
/ 14 июня 2011

std::list<T>::iterator - двунаправленный итератор. Afaik, параллель openmp3 для цикла работает только с итераторами произвольного доступа (и нет! =, Как упоминалось в ejd). Может быть, вы можете использовать std::vector вместо

...