Вот небольшой совет, но не более того:
Если вы хотите найти места по имени или префиксу имени, как вы указываете, что хотите, тогда вам будет не рекомендуется создавать структуру данных, которая хранит данные в иерархии страны, региона, города, как вы предлагаете. ты мог бы. Если у вас есть операция, которая доминирует в использовании вашей структуры данных, вы, как правило, лучше всего выбираете структуру данных, подходящую для этой операции.
В этом случае алфавитный список мест больше подходит для ваших запросов. К каждому месту, не находящемуся на самом верхнем уровне, вы захотите добавить какую-то ссылку на имя его «родителя». Если у вас есть алфавитный список мест, вы также можете рассмотреть вопрос об указателе, возможно, таком, который указывает непосредственно на первое место в списке, которое начинается с каждой буквы алфавита.
По мере того, как вы описываете свою проблему, кажется, что у нее гораздо больше общего с хранением слов в словаре (я имею в виду такие вещи, в которых вы ищите слова, а не какой-либо конкретный тип данных коллекции на любом конкретном языке программирования, который относится к одному и тому же name), чем с большей частью того, что идет под видом геокодирования.
Я предполагаю, что географический справочник, включающий названия всех городов мира, регионов и стран (и их координаты) с населением, скажем, более 1000 человек, может быть сохранен в очень простой структуре данных (в основном в виде списка) с индексом или двумя для быстрого определения местоположения первого названия места A, первого названия B и так далее. С небольшим сжатием вы, вероятно, сможете сохранить это в памяти большинства современных настольных ПК.
person
High Performance Mark
schedule
30.07.2012