map — Почему оператора == недостаточно для std :: unordered_map?

Почему мне нужно реализовать оператор == и случайный оператор, возвращающий size_t? И что на самом деле должен возвращать метод, возвращающий size_t?

РЕДАКТИРОВАТЬ: Когда я сказал случайный оператор, я не имел в виду, что это бесполезно. То, что я имел в виду, в моих глазах я не вижу, для чего это нужно, отсюда и последний вопрос. 7

2

Решение

Хеш-контейнер (hashtable, hashmap, unordered map) использует хеш-функцию для генерации одного целочисленного значения для представления индекса (или ключа) для записи. Это обеспечивает очень быстрый поиск, поскольку (при условии, что у нас есть хороший разброс значений хеша), как только у нас есть хеш, нам просто нужно посмотреть на этот индекс. Большинство других методов хранения означает сравнение множества вещей, пока не будет найден нужный элемент.

На самом деле есть только два правила для хэш-ключей:
1. Вы получаете одну и ту же клавишу для данного ввода каждый раз, когда вызывается хеш-функция.
2. Значение различно для разных входных данных — оно НЕ ДОЛЖНО быть уникальным, но чем больше вы получаете от подобного входного сигнала, тем лучше.

4

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

Других решений пока нет …

По вопросам рекламы [email protected]