В информатике , зубчатый массив , также известный как рваный массив [1] или нерегулярный массив [2] представляет собой массив массивов, в котором массивы-члены могут иметь разную длину, [3] создавая строки зубчатых краев при визуализации в качестве вывода. Напротив, двумерные массивы всегда прямоугольные [4], поэтому зубчатые массивы не следует путать с многомерными массивами , но первый часто используется для эмуляции второго.
Массивы массивов в таких языках, как Java, PHP, Python (многомерные списки), Ruby, C#.NET, Visual Basic.NET , Perl, JavaScript, Objective-C, Swift и Atlas Autocode, реализованы как векторы Илиффе .
В C# и Java [5] зубчатые массивы можно создать с помощью следующего кода: [6]
int [][] c ; c = new int [ 2 ][]; // создает 2 строки c [ 0 ] = new int [ 5 ]; // 5 столбцов для строки 0 c [ 1 ] = new int [ 3 ]; // создает 3 столбца для строки 1
В C и C++ зубчатый массив можно создать (в стеке) с помощью следующего кода:
int jagged_row0 [] = { 0 , 1 }; int jagged_row1 [] = { 1 , 2 , 3 }; int * jagged [] = { jagged_row0 , jagged_row1 };
В C/C++ зубчатые массивы также можно создавать (в куче) с помощью массива указателей:
int * зазубренный [ 5 ]; jagged [ 0 ] = malloc ( sizeof ( int ) * 10 ); jagged [ 1 ] = malloc ( sizeof ( int ) * 3 );
В C++/CLI зубчатый массив можно создать с помощью кода: [7]
using namespace System ; int main () { array < array < double > ^> ^ Arrayname = gcnew array < array < double > ^> ( 4 ); // массив содержит 4 //элемента return 0 ; }
В Фортране зубчатый массив можно создать с использованием производных типов с выделяемыми компонентами:
тип :: Jagged_type целое число , выделяемое :: строка (:) конец типа Jagged_type тип ( Jagged_type ) :: Jagged ( 3 ) Jagged ( 1 )% строка = [ 1 ] Jagged ( 2 )% строка = [ 1 , 2 ] Jagged ( 3 )% строка = [ 1 , 2 , 3 ]
В Python зубчатые массивы не являются нативными, но можно использовать списочные генераторы для создания многомерного списка, который поддерживает любую размерную матрицу: [8]
multi_list_3d = [[[] для i в диапазоне ( 3 )] для i в диапазоне ( 3 )] # Производит: [[[], [], []], [[], [], []], [[], [], []]]multi_list_5d = [[[] for i in range ( 5 )] for i in range ( 5 )] # Производит: [[[], [], [], [], [], []], [[], [], [], [], [], []], [[], [], [], [], []], [[], [], [], []]]