Я пытаюсь использовать openmp для многопоточного цикла через std:: set. Когда я пишу следующий код -
#pragma omp parallel for
for (std::set<A>::const_iterator i = s.begin(); i != s.end(); ++i) {
const A a = *i;
operate(a);
}
Я получаю эту ошибку:
error: invalid type for iteration variable 'i'
error: invalid controlling predicate
error: invalid increment expression.
Есть ли другой правильный способ итерации через std-контейнеры с использованием openmp?
Я знаю, что могу использовать int i
и перебирать с 0
в s.size()
и итератор или operator[]
в тело цикла, но это выглядит намного менее чистым.