Jagged array

Minneslayout för en taggig array.

Inom datavetenskap är en taggig array , även känd som en trasig array , irregular array en array av arrayer vars medlemsmatriser kan vara av olika längd, vilket ger rader av taggiga kanter när de visualiseras som utdata. Däremot är tvådimensionella arrayer alltid rektangulära så taggiga arrayer bör inte förväxlas med flerdimensionella arrayer , men den förra används ofta för att emulera den senare.

Arrayer av arrayer i språk som Java, PHP, Python (flerdimensionella listor), Ruby, C#.NET, Visual Basic.NET , Perl, JavaScript, Objective-C, Swift och Atlas Autocode implementeras som Iliffe-vektorer .

Exempel

I C# och Java kan taggiga arrayer skapas med följande kod:


    
0    
     int  [][]  c  ;  c  =  ny  int  [  2  ][];  // skapar 2 rader  c  [  ]  =  new  int  [  5  ];  // 5 kolumner för rad 0  c  [  1  ]  =  ny  int  [  3  ];  // skapa 3 kolumner för rad 1 

I C och C++ kan en taggig array skapas (på stacken) med följande kod:

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

I C/C++ kan taggiga arrayer också skapas (på högen) med en array av pekare:

 

0    
     int  *  taggig  [  5  ];  taggig  [  ]  =  malloc  (  storlek på  (  int  )  *  10  );  taggig  [  1  ]  =  malloc  (  storlek på  (  int  )  *  3  ); 

I C++/CLI kan taggig array skapas med koden:

  
 

              
    
     0
 använder  namnområde  System  ;  int  main  ()  {  array  <  array  <  double  >  ^>  ^  Arrayname  =  gcnew  array  <  array  <  double  >  ^>  (  4  );  // array innehåller 4  //element  return  ;  } 

I Fortran kan en taggig array skapas med hjälp av härledda typer med allokerbar(a) komponent(er):

  
       

  
  
  
   typ  ::  Jagged_type  heltal  ,  allokerbar  ::  rad  (:)  sluttyp  Jagged_type  type  (  Jagged_type  )  ::  Jagged  (  3  )  Jagged  (  1  )%  rad  =  [  1  ]  Jagged  (  2  )%  rad  =  [  1  ,  2  ]  Jagged  (  3  ) %  rad  =  [  1  ,  2  ,  3  ] 

I Python är taggiga arrayer inte inbyggda men man kan använda listförståelse för att skapa en flerdimensionell lista som stöder vilken dimensionell matris som helst:

          


          
 multi_list_3d  =  [[[]  för  i  i  intervall  (  3  )]  för  i  i  intervall  (  3  )]  # Producerar: [[[], [], []], [[], [], []], [[ ], [], []]]  multi_list_5d  =  [[[]  för  i  i  intervall  (  5  )]  för  i  i  intervall  (  5  )]  # Producerar: [[[], [], [], [], [] ], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], [ ]], [[], [], [], [], []]] 

Se även