Как неупорядоченная картаобрабатывает негативные элементы? - PullRequest
1 голос
/ 09 октября 2019

Я могу назначить отрицательные элементы в качестве ключа на карте, например, map[-1]=10;, как он обрабатывает их обратно, какая структура данных используется для этого? Я знаю, что unordered_map использует внутреннее хеширование, как он обрабатывает отрицательные элементы для хеширования? Если я использую массив для хеширования, я не могу хэшировать отрицательные элементы, потому что индекс массива не может быть отрицательным

1 Ответ

6 голосов
/ 09 октября 2019

Неупорядоченная карта - это ассоциативный контейнер, содержащий пары ключ-значение с уникальными ключами. Поиск, вставка и удаление элементов имеют среднюю сложность с постоянным временем.

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

unordered_map использует хеширование для доступа к элементам. Нет проблем в хешировании отрицательных целых чисел или любого другого типа, если определена хеш-функция.

...