Что определяет размер элемента / корзины? - индекс Ха sh - PullRequest
1 голос
/ 20 февраля 2020

Обещание, которое я искал, и люди задавали похожие вопросы, но ответ всегда кажется технически невозможным, но без объяснения причин. Я также выполнил поиск в Google и получил ту же информацию.

Я спрашиваю это с независимого от языка фронта. Я знаю, что индекс ha sh работает, создавая массив, а затем помещая ключ через функцию ha sh, которая затем отображается на индекс в массиве. В литературе всегда говорится, что вы можете иметь только одно значение на ключ, которое я предполагаю в зависимости от типа данных / процессор означает 4,8 байта на элемент / индекс в памяти. Я знаю, что вы можете иметь несколько значений для каждого ключа, если вы используете указатель на другой массив или список, но что технически мешает вам объявить, например, ключ = значение автомобиля = Audi, Blue, универсал, 19-дюймовые колеса и размещение большего количества байтов в этом одном элементе ?

Это потому, что вызов индекса должен быть в одном считывании из памяти, а максимальный размер сегмента равен ширине шины данных? Или потому, что так устроен компилятор, и теоретически они могли заставить компилятор работать с кодом, который утверждал, что ему нужно более одного значения на ключ? Или, наконец, возможно, это связано с тем, что функция ha sh работает только потому, что она заранее знает размер массива и что для размещения всех пар ключ / значение в непрерывной памяти требуется, чтобы каждый элемент сохранял только одно значение?

Извинения, если я упускаю что-то действительно очевидное, но я просто не понимаю, почему это технически невозможно. Спасибо, что выслушали меня go на LOL

1 Ответ

0 голосов
/ 20 февраля 2020

Добро пожаловать на SO, Роб!

Ничто не может иметь несколько значений . Например, вы не можете иметь несколько значений для переменной в математике. X не может быть и 1, и 0, если мы не говорим квантовые вычисления . Точно так же вы не можете иметь несколько значений на ключ.

Еще один способ взглянуть на это - использовать функциональную зависимость , которая гласит, что если ключ X имеет значения Y и Z, то вы можете иметь ключ X дважды, один раз указывая на Y и однажды указывая на Z. Это означает, что вам понадобятся дубликаты ключей, чего мы не можем сделать на картах ha sh.

Надеюсь, это поможет.

...