Я хочу создать действительно простую в использовании 2D Grid. Каждая ячейка в сетке должна иметь возможность хранить множество данных. В идеале я хотел бы иметь возможность проходить через сетку по одной ячейке за раз, а также получать непосредственных соседей любой из ячеек сетки.
Моей первой мыслью было сохранить вектор указателей на соседей ячейки (всего 4), затем создать вспомогательные функции для leftNeighbour, rightNeighbour и т. Д. Подключение сетки после инициализации.
Предполагается, что std :: vector является динамически изменяемым массивом, так что это может показаться мне ненужным, если я собираюсь жестко закодировать позиции указателей (0 == слева, 1 == справа, так далее). Тем не менее, он позволяет лучше обходить соседей ячейки. Еще одна вещь, которую я должен рассмотреть, - это если ячейка находится на границе с краем сетки (нужно ли проверять это или просто неявно расширять сетку на одну ячейку, чтобы это никогда не происходило).
Кто-нибудь может предложить лучшую альтернативу, или это звучит как разумный дизайн?
Спасибо, Дэн