LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

А зачем тогда unordered_multiset? Насколько я понял доки (особо не вчитывался), при хэш-коллизии в unordered_set остаётся один элемент?

Нет. Посмотри ещё раз пример, там у всех хеш ноль, но строки все на месте.

https://gcc.godbolt.org/z/CLnpNB

Уникальность гарантируется не хешем, а оператором == или своим оператором сравнения как в примере.

multiset, это чтобы хранить разные элементы, но для которых мы определили ==.

Пример с multiset, вот у нас есть лекарства. Мы сделали им хеш как их цена, operator ==, как их название, но они могут различаться например страной производства. И мы можем получить список всех одинаковых из multiset: https://en.cppreference.com/w/cpp/container/unordered_multiset/equal_range

Точно ничего не потеряется из-за одинакового хэша в unordered_set

Исходная версия fsb4000, :

А зачем тогда unordered_multiset? Насколько я понял доки (особо не вчитывался), при хэш-коллизии в unordered_set остаётся один элемент?

Нет. Посмотри ещё раз пример, там у всех хеш ноль, но строки все на месте.

https://gcc.godbolt.org/z/CLnpNB

Уникальность гарантируется не хешем, а оператором == или своим оператором сравнения как в примере.

multiset, это чтобы хранить разные элементы, но для которых мы определили ==.

Пример с multiset, вот у нас есть лекарства. Мы сделали им хеш как их цена, operator ==, как их название, но они могут различаться например страной производства. И мы можем получить список всех одинаковых из multiset: https://en.cppreference.com/w/cpp/container/unordered_multiset/equal_range

Точно ничего не потеряется из-за одинакового хэша.