本当に使いやすい 2D グリッドを作成したいと考えています。グリッド内の各セルは、大量のデータを格納できる必要があります。理想的には、一度に 1 つのセルをトラバースし、任意のグリッド セルの直近のセルを取得できるようにしたいと考えています。
最初に考えたのは、Cell の隣接セル (合計 4 つ) へのポインターのベクトルを格納し、leftNeighbour、rightNeighbour などの便利な関数を作成することでした。初期化後にグリッドを接続します。
std::vector は動的にサイズ変更可能な配列であると想定されているため、ポインターの位置 (0 == 左、1 == 右など) のみをハードコーディングする場合、これはかなり不必要だと思います。ただし、セルの隣接セルを反復処理するためのより適切な方法が可能になります。私が考慮しなければならないもう1つのことは、セルがグリッドの端との境界にあるかどうかです(これをテストするか、これが起こらないようにグリッドを1セルだけ暗黙的に拡張するか)。
誰かがより良い代替案を提案できますか、またはこれは合理的な設計のように聞こえますか?
ありがとう、ダン