Итератор выполняет итерацию по boost :: unordered_set или boost :: unordered_map в том же порядке, пока набор не изменяется?

Итератор проходит через boost::unordered_set или же boost::unordered_map в том же порядке, пока набор или карта неизменна?

9

Решение

В некоторых реализациях хэш-карты элементы, которые хэшируются, будут переупорядочены в одном и том же бине, а последний доступный элемент помещается в начало списка в качестве оптимизации. Это изменило бы порядок. Я не знаю что boost::unordered_map делает это, но в будущем вы можете заменить std::unordered_map и все это будет зависеть от реализации вашего компилятора.

5

Другие решения

Это должно быть детерминированным, но пока они так называемые неупорядоченный, Вы не должны полагаться на это, чтобы перебрать свои элементы.

1