Проверьте расположение ячейки в матрице - PullRequest
0 голосов
/ 29 января 2020

У меня есть матрица 7x7 (объявлена ​​как uint8_t*):

x B B B B B x
B S S S S S B
B S S S S S B
B S S S S S B
B S S S S S B
B S S S S S B
x B B B B B x

Где x - ребра, B - граница, а S - остальная часть матрицы .

Мне нужно знать, где находится данная ячейка i - в границах, ребрах или внутри матрицы, и выполнить операцию с ней, если она находится внутри матрицы, а не на любые границы или края. Кроме того, было бы лучше использовать многомерный массив (uint8_t**)?

1 Ответ

2 голосов
/ 29 января 2020

То, какое представление лучше, зависит от остальной части вашего кода. В любом случае будет работать.

Что касается того, как отличить края от середины, если i%7 == 0 вы находитесь на левом краю, если i%7 == 6 вы на правом краю. Если i < 7 вы наверху, а i >= 56 на нижнем краю. Если ни один из них, то вы в середине.

И это позволяет понять, какое представление лучше: эти модовые операции медленны, поэтому, если вы собираетесь делать много этого, тогда 2-й массив лучше. Но если вы в основном просто индексируете последовательно, 1-й должен быть быстрее. Конечно, есть и другие соображения - это просто о чем подумать.

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