SND :: Находит все еще гарантирует первый элемент с помощью std :: execution :: PAR?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 SND :: Находит все еще гарантирует первый элемент с помощью std :: execution :: PAR?

Сообщение Anonymous »

Параллельная политика гласит, что порядок оценки итератора не гарантируется. Тем не менее, std :: find*, std :: search и std :: mismatch все говорят, что они возвращают первое условие соответствия итератора. Как взаимодействуют эти два оператора?

Код: Выделить всё

std::vector v(10);
std::iota(v.begin(), v.end(), 0);
const auto odd = [](int i) { return i % 2; };
const auto it = std::find(v.begin(), v.end(), odd);
assert(*it == 1);
Наивное чтение документации позволило бы два потока обрабатывать куски [0, 4] и [5, 9] параллельно, а последняя возвращается сначала, что приводит к *it == 5 . Или все еще считается, что для нескольких совпадений самые ранние возвращаются? Я не смог найти какую -либо соответствующую цитату о CPPReerference для , или каких -либо их подпажков. Как этот вопрос о изменении основного контейнера во время выполнения алгоритма.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ecutionpar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»