Задать вопрос
@beduin01

Как устроены хэштаблицы?

Вопрос простой. Вот к примеру мы наполняет хэш-таблицу данными. В начале хэштаблица пустая. Хэш элемента у нас получается к примеру 42. Т.е. мы должны его на 42 позицию записать. Получается что мы должны дорастить таблицу с 0 до 42? Ведь иначе то позиционный номер аргумента никакого толку не даст. А если хэш следующего будет 100500 то тогда получается придется создать огромную таблицу, но она всего из двух элементов будет состоять?

Или как эту проблема решается?
  • Вопрос задан
  • 236 просмотров
Подписаться 2 Простой 3 комментария
Решение пользователя Wataru К ответам на вопрос (2)
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Сначала выделяется массив какого-то размера, например 256. Обычно длина - степень двойки. Потом хеш обрезается до размера таблицы. Если элементов становится слишком много, то происходит перехеширование - размер таблицы увеличивается, и все элементы в нее перезапихиваются.

Но да, если в таблицу запихать много элементов, а потом почти все оттуда удалить, то она будет большая и почти вся пустая.

Edit:

Эта "проблема" никак не решается. Это и не проблема вовсе. Просто хеш-таблицы работают быстрее всяких балансированных деревьев или тупо сортированного массива за счет большего расхода памяти. Это нужно знать и дальше уже решать - что вам больше подходит под вашу конкретную задачу.
Ответ написан
Комментировать