C をよりよく理解し、iOS 用に構築しているアプリのパフォーマンスを向上させるために、C でパス検索を実装することにしました。
コードはこちらから入手できます
コードでは、次の構造を作成して使用します。
- ノード: これはグラフの頂点で、座標と A* に関連するその他のデータがあります。
- NodeGraph: ノードのコレクション
- NodeHeap: オープン リスト (プライオリティ キュー) に使用されるヒープ
NodeGraph は、ノード メモリの管理を担当します。ノードへのアクセスが必要な他のすべてのものは、NodeGraph 内の特定のノードへのポインターを使用します。たとえば、NodeHeap は次のようなノード ポインターの単なるコレクションです。
// graph is NodeGraph* created elsewhere
Node* n = &(graph->nodes[x][y]);
// heap is a Nodeheap* created elsewhere
heap[0] = n;
ゲーム内では、複数のパス検索呼び出しに同じグラフ構造を使用するつもりです。同じ構造を解放して新しいものにメモリを割り当てるのではなく、同じ構造を再利用することでパフォーマンスが向上することを理解しています。
これは、Cでこのようなことをするべき方法ですか? 私が利用していない C コンストラクトはありますか、それとも完全に欠けているものはありますか?