2013-08-24 2 views
0

Я пишу программу, которая должна эмулировать город, и одна из проблем, с которыми я сталкиваюсь, заключается в том, как хранить большое количество взаимосвязанных данных. Например, каждый Street имеет нумерацию direction (NORTH_ONE_WAY, EAST_WEST и т. Д.) И другие атрибуты. Самым важным атрибутом является то, что на каждой улице есть список intersections (карта улицы, с которой он пересекается, вместе с номером блока, на котором он пересекает). Из этой структуры данных я должен иметь возможность анализировать ее и создавать визуализацию (которая приходит позже и не является частью этого вопроса).Улицы и пересечения Структура данных

Вопрос в следующем: какой тип структуры данных лучше всего использовать для этого? Очевидно, что реляционная база данных будет хорошим выбором, но если я пишу в C++ (не ограничение для этого вопроса, но реализация на C++ будет плюсом), следует ли мне это использовать? Какие другие структуры данных могут работать для этого?

ответ

0

Структура данных, которую вы описываете, - График. См., Например, Boost'sBGL для общей библиотеки, работающей на графиках. Обратите внимание, что это не означает, что вы не будете использовать базу данных: хранение данных и представление в памяти, как правило, отличаются друг от друга. Фактическое представление, как правило, зависит от того, что вы хотите делать с данными.

0

Просто не поддерживайте отношения в каждом локальном объекте. Имейте объект «meta», оценивающий отношение, он может их кэшировать.

Некоторая разработка: Улица должна знать, что это фонарики и красивые сады и перекрестки, конечно. Но это пересечение ни к чему (это не имеет значения). У улицы может быть одна полоса или двойная полоса на пересечении (для левых поворотов). Пересечение поддерживается некоторым более высоким экземпляром.

(Извинение в левые водитель полосных)

+0

Вы имеете в виду Main St не следует хранить пересечения с Fairfield, и Fairfield не следует хранить пересечение с Main ... там должен быть отдельным объект в целом, чтобы сохранить эту единственным пересечение (и другие)? – MattDavBen

+1

@MattDavBen Да. –

Смежные вопросы