Порядок итерации std :: unordered_set - PullRequest
1 голос
/ 03 августа 2020

Один и тот же код с использованием std :: unordered_set (или std :: unordered_map) выполняется на двух разных машинах и скомпилирован с одной и той же точной версией g ++, дает один и тот же порядок итераций?

Связанный, но немного другой вопрос

Я добавляю здесь несколько комментариев, чтобы лучше объяснить, что я пытаюсь понять.

Достаточно ли исправить версию компилятора, чтобы получить такое же поведение, в данном случае с точки зрения порядок итераций? Или это зависит от чего-то другого?

Спасибо, что указали, что стандарт не требует какого-либо поведения. Однако реализация должна быть четко определена. В конце концов, это компьютерный код, поэтому он детерминирован c и четко определен. Единственная альтернатива, которая приходит мне в голову, - это то, что какая-нибудь безумная реализация может использовать какой-то реальный источник рандомизации, но я думаю, что это очень маловероятно.

1 Ответ

3 голосов
/ 03 августа 2020

В стандарте C ++ нет ничего, что указывало бы на то, что это должно быть.

g ++, похоже, не имеет какой-либо документации, указывающей выше и сверх того, что стандарт требует для этого конкретного topi c.

Тогда я бы сказал, что нет, в общем

...