ddd является графическим фронтендом к gdb, который довольно хорош. Один из вниз стороны являются классиком X интерфейсов, но я, кажется, вспоминаю его являющийся довольно интуитивным.
Существуют языки, которые реализуют 2D (или 3D и т. Д.) Массивы. Фортран - один из них. Это означает, что вы можете написать выражение индекса массива, например array [x, y]
, и язык позаботится о математике, чтобы найти правильный элемент.
Кроме того, Numpy является числовое расширение Python, которое предоставляет n-мерные массивы.
В C # есть многомерные массивы , но они не рекомендуются, поскольку зубчатые массивы (массивы массивов) более производительны.
Кто-то уже упоминал numpy
, и ОП прокомментировал, что «это возвращение к причудливой математике указателей с массивами C» - это совершенно тривиальная деталь реализации! Поскольку базовая память в (нормальном ;-) компьютере может рассматриваться как массив байтов (или слов), тогда конечно любая структура данных вообще реализована поверх этот массив (или его фрагменты) плюс "причудливая математика указателя" - двусторонние очереди, многомерные массивы, двоичные деревья, вы называете это, лежащие в основе реализации всегда будут сводиться к этому (точно так же, как все причудливые структуры управления сводятся к к условным и безусловным прыжкам на машинном уровне и т. д.). ТАК ЧТО ?! Конечно, это детали реализации .
Фортран имеет реальные многомерные массивы. Эта ссылка говорит о них в случае FORTRAN 77.
Я полагаю, «поддержка 2D-массивов» означает, как язык позволяет вам получать доступ к данным, как если бы это был 2D-массив. В c причудливая математика скрыта конструкциями массива:
char arr[5][5];
char c = arr[2][3];
Есть способ сделать это и с помощью арифметики указателей (которую вы, вероятно, называете причудливой математикой).
На самом деле память - это большой кусок адресуемых байтов data [0,1,2,3,4,5,6 ... конец памяти], поэтому нет «родного» понятия 2D-массива, что-то где-то должно переводить программисты «строка 1, столбец 2» в фактический адрес в объем памяти. Языки программирования обычно позволяют скрыть перевод.
Фактические массивы в Python, то есть объект array
, созданный модулем array
, являются строго одномерными . Вы также, вероятно, не будете использовать их, если ваш код не должен взаимодействовать со структурами данных C, вы работаете с огромными объемами данных, которые должны храниться в памяти, или вы пишете что-то вроде numpy
.
В Rosetta Code есть примеры на языке Python для создания двухмерного массива .
.