Мне нужно хранить график для карты игры на игровом сервере, написанном на C.
График имеет ~ 200 узлов и 3 вида ребер, которые могут соединять два узла (эти три вида могуттакже перекрываются: узел может быть связан, например, двумя ребрами двух разных типов).Максимальная степень узла - что-то вроде 5-6 узлов.
Мне бы хотелось, чтобы эта статическая структура была реализована эффективным способом, позволяющим мне выполнять простые операции, такие как
* 1006.* подключен n1 к n2?(со всеми видами ребер в случае положительного ответа) с чем связан n1?(со всеми видами ребер или определенным)
, но в многопоточной среде, поскольку будет много примеров игры, которая опирается на один и тот же статический граф.
Поскольку график не может быть изменен, а структура хорошо известна, я уверен, что есть некоторые хитрости, которые позволят реализовать его в крутой манере, чтобы использовать как можно меньше ресурсов.
Я бы хотел избежать использования STL или Boostна данный момент ... есть ли у вас какие-либо подсказки относительно структуры данных, которая могла бы хорошо подойти?
(это не преждевременная оптимизация, дело в том, что она будет работать на VPS, и у меня не так много оперативной памятимощность процессора, поэтому мне нужно держать ее в узде)
РЕДАКТИРОВАТЬ : только потому, что я забыл (и благодаря тому, что я понял это) график ненаправлен , так что каждый крайсимметрично ..
Заранее спасибо