Jagged array - Jagged array

Image
Hukommelseslayout for et ujævnt array.

Inden for datalogi er et ujævnt array , også kendt som et hakket array , et array af arrays, hvoraf medlemsarraysne kan have forskellige længder, der producerer rækker af takkede kanter, når de visualiseres som output. I modsætning hertil er todimensionelle arrays altid rektangulære, så takkede arrays bør ikke forveksles med multidimensionelle arrays , men førstnævnte bruges ofte til at efterligne sidstnævnte.

Arrays af arrays på sprog som Java, PHP, Python (flerdimensionale lister), Ruby, C#.Net, Visual Basic.NET , Perl, JavaScript, Objective-C, Swift og Atlas Autocode implementeres som Iliffe-vektorer .

Eksempler

I C# og Java kan der oprettes ujævne arrays med følgende kode:

int[][]c;
c = new int[2][]; // creates 2 rows
c[0] = new int[5]; // 5 columns for row 0
c[1] = new int[3]; // create 3 columns for row 1

I C og C ++ kan der oprettes et ujævnt array (på stakken) ved hjælp af følgende kode:

int jagged_row0[] = {0,1};
int jagged_row1[] = {1,2,3};
int *jagged[] = { jagged_row0, jagged_row1 };

I C/C ++ kan der også oprettes ujævne arrays (på bunken) med en række pointers:

int *jagged[5];

jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);

I C ++/CLI kan der oprettes ujævn array med koden:

using namespace System;
int main()
{
    array<array<double> ^> ^ Arrayname = gcnew array <array<double> ^> (4); // array contains 4 
    //elements
    return 0;
}

I Python er takkede arrays ikke native, men man kan bruge listeforståelser til at oprette en multidimensionel liste, der understøtter enhver dimensionel matrix:

multi_list_3d = [[[] for i in range(3)] for i in range(3)]
# Produces: [[[], [], []], [[], [], []], [[], [], []]]

multi_list_5d = [[[] for i in range(5)] for i in range(5)]
# Produces: [[[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []]]

Se også

Referencer