У меня есть большое количество последовательных целых чисел, для которых мне нужно выполнить поиск, т.е. мне нужно получить смещение для серийного целого идентификатора. Проблема в том, что я бы предпочел не загружать всю таблицу в память для построения хеш-таблицы / словаря из-за ограничений памяти, так что делать?
Одно из решений, которое может сработать, состоит в том, чтобы иметь файл, в котором первое сохраненное целое число является наименьшим используемым идентификатором, затем вы записываете массив нулевых целых чисел, по одному для каждого идентификатора, к наибольшему (добавляя при необходимости) и записываете идентификатор в правильная позиция. Например, если наименьший идентификатор равен 1000 и вы хотите получить смещение в 20000, вы просто извлекаете целое число в позиции 10000 + 20000-1.
При отображении памяти эта техника должна работать довольно хорошо. У кого-нибудь была подобная проблема, это хорошее решение или есть какой-то лучший способ?