Чтобы лучше понять C и попытаться улучшить производительность приложения, которое я создаю для iOS, я решил реализовать поиск пути в C.
Код доступен здесь
В коде я создаю и использую следующие структуры:
- Узел: это вершина графа, она имеет координаты и некоторые другие связанные данныеA *
- NodeGraph: коллекция узлов
- NodeHeap: куча, которая используется для открытого списка (приоритетная очередь)
NodeGraph отвечает зауправление памятью узла;все остальное, что требует доступа к узлу, использует указатель на конкретный узел в NodeGraph.Например, NodeHeap - это просто набор указателей Node, таких как:
// graph is NodeGraph* created elsewhere
Node* n = &(graph->nodes[x][y]);
// heap is a Nodeheap* created elsewhere
heap[0] = n;
В игре я намерен использовать одну и ту же структуру графа для вызовов поиска нескольких путей.Насколько я понимаю, есть некоторый выигрыш в производительности от повторного использования одной и той же структуры, в отличие от освобождения ее и выделения памяти для новой.
Это то, как я должен делать что-то подобное в C?Существуют ли какие-либо конструкции C, которыми я не пользуюсь, или что-то еще, чего я полностью упускаю?