为了更好地理解 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 构造,或者我完全缺少的其他任何东西?