Как получить элемент из двухмерного массива без зацикливания всего массива? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть простой класс:

public class XYPoint {
    public int x, y;
}

И двумерный массив, который содержит массивы объектов Point:

(-2,  2)(-1,  2)(0,  2)(1,  2)(2,  2)
(-2,  1)(-1,  1)(0,  1)(1,  1)(2,  1)
(-2,  0)(-1,  0)(0,  0)(1,  0)(2,  0)
(-2, -1)(-1, -1)(0, -1)(1, -1)(2, -1)
(-2, -2)(-1, -2)(0, -2)(1, -2)(2, -2)

Соответствующие идентификаторы:

 0  1  2  3  4 
 5  6  7  8  9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24

Допустим, я хочу получить элемент с идентификатором 0, тогда он вернет -2, 2.Если я захочу получить от 6, он вернет -1, 1 и т. Д.

Есть ли способ получить элемент без зацикливания всего массива?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы, по сути, представляете 1d массив, структурированный 2d способом.Имея это в виду, вы можете отобразить 1d координату (в вашем случае, например, 7) на 2d следующим образом:

[1d / width] [1d mod width]

1d как ваш "id"и ширина, равная длине массива 2d

1d / width, приводит к соответствующей" строке "вашего идентификатора, а ширина 1d mod в соответствующем" столбце "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...