Что предназначено 2D поддержкой массивов?

ddd является графическим фронтендом к gdb, который довольно хорош. Один из вниз стороны являются классиком X интерфейсов, но я, кажется, вспоминаю его являющийся довольно интуитивным.

8
задан Community 23 May 2017 в 11:47
поделиться

7 ответов

Существуют языки, которые реализуют 2D (или 3D и т. Д.) Массивы. Фортран - один из них. Это означает, что вы можете написать выражение индекса массива, например array [x, y] , и язык позаботится о математике, чтобы найти правильный элемент.

Кроме того, Numpy является числовое расширение Python, которое предоставляет n-мерные массивы.

10
ответ дан 5 December 2019 в 07:35
поделиться

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

2
ответ дан 5 December 2019 в 07:35
поделиться

Кто-то уже упоминал numpy , и ОП прокомментировал, что «это возвращение к причудливой математике указателей с массивами C» - это совершенно тривиальная деталь реализации! Поскольку базовая память в (нормальном ;-) компьютере может рассматриваться как массив байтов (или слов), тогда конечно любая структура данных вообще реализована поверх этот массив (или его фрагменты) плюс "причудливая математика указателя" - двусторонние очереди, многомерные массивы, двоичные деревья, вы называете это, лежащие в основе реализации всегда будут сводиться к этому (точно так же, как все причудливые структуры управления сводятся к к условным и безусловным прыжкам на машинном уровне и т. д.). ТАК ЧТО ?! Конечно, это детали реализации .

6
ответ дан 5 December 2019 в 07:35
поделиться

Фортран имеет реальные многомерные массивы. Эта ссылка говорит о них в случае FORTRAN 77.

1
ответ дан 5 December 2019 в 07:35
поделиться

Я полагаю, «поддержка 2D-массивов» означает, как язык позволяет вам получать доступ к данным, как если бы это был 2D-массив. В c причудливая математика скрыта конструкциями массива:

char arr[5][5];
char c = arr[2][3];

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

На самом деле память - это большой кусок адресуемых байтов data [0,1,2,3,4,5,6 ... конец памяти], поэтому нет «родного» понятия 2D-массива, что-то где-то должно переводить программисты «строка 1, столбец 2» в фактический адрес в объем памяти. Языки программирования обычно позволяют скрыть перевод.

1
ответ дан 5 December 2019 в 07:35
поделиться

Фактические массивы в Python, то есть объект array , созданный модулем array , являются строго одномерными . Вы также, вероятно, не будете использовать их, если ваш код не должен взаимодействовать со структурами данных C, вы работаете с огромными объемами данных, которые должны храниться в памяти, или вы пишете что-то вроде numpy .

1
ответ дан 5 December 2019 в 07:35
поделиться

В Rosetta Code есть примеры на языке Python для создания двухмерного массива .

.
1
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: