прямой доступ к векторным элементам, похожим на массивы - PullRequest
1 голос
/ 23 мая 2010

В настоящее время я создаю игру на основе тайлов, в которой элементы игр размещаются в четырех разных векторах (поскольку существует несколько игровых объектов с разными свойствами, следовательно, хранящихся в разных векторах).

Сами эти игровые элементы содержат координаты x и y, аналогичные тому, как они хранятся в двумерном массиве. Мне было интересно, есть ли способ доступа к этим элементам вектора, аналогичный доступу к двумерному массиву (в настоящее время я реализую цикл for для циклического перемещения элементов при сравнении их координат).

Это отстой, когда мне нужно обновлять мой дисплей в каждом игровом цикле (так как большое количество сравнений и циклов).

Я реализую это в Java, кстати.

Ответы [ 3 ]

4 голосов
/ 23 мая 2010

Я бы посоветовал подумать «объектно-ориентированный»: создать класс с именем Board или Grid или любым другим, который соответствует той детали реализации, которую выбирают между 2D-массивом или вектором векторов. Добавьте метод, который позволяет вам возвращать жетон доски для данного индекса (i, j) на доску.

2 голосов
/ 23 мая 2010

Не используйте Vector, используйте ArrayList .

Если у вас очень большие данные, посмотрите, возможно, буферы, например IntBuffer .

0 голосов
/ 23 мая 2010

Три идеи:

  • Вы можете использовать HashMap с координатами в качестве ключа и ваши элементы в качестве значения. Это быстрее, чем циклический переход по вектору и облегчение памяти.
  • Вы можете хранить ноль вместо элементов в пустых координатах. Таким образом, вы можете получить доступ к каждой сохраненной памяти по ее координатам. Самый быстрый, но интенсивный способ памяти.
  • Ускорение того, что вы в данный момент делаете: сортируйте элементы по их координатам один раз, а затем используйте двоичный поиск, чтобы найти их в векторе.
...