Che cos'è una matrice seghettata (in C#)? Qualsiasi esempio e quando si dovrebbe usarlo ....Cos'è una matrice seghettata?
risposta
Una matrice seghettata è una matrice di matrici.
string[][] arrays = new string[5][];
Questo è un insieme di cinque differenti matrici di stringhe, ciascuna potrebbe essere una lunghezza diversa (potrebbero anche essere la stessa lunghezza, ma il punto è che non c'è garanzia che siano).
arrays[0] = new string[5];
arrays[1] = new string[100];
...
Questo è diverso da un array 2D in cui è rettangolare, ovvero ogni riga ha lo stesso numero di colonne.
string[,] array = new string[3,5];
Per essere precisi, gli array interni non sono * necessariamente * tutti della stessa lunghezza; potrebbero essere molto bene. In realtà è abbastanza comune implementare array multidimensionali come array frastagliati. – Asik
@ Asik, sono d'accordo. Le parole nella prima frase relative alle lunghezze sono state modificate da un altro utente. Aggiornerà. –
Una matrice irregolare è lo stesso in qualsiasi lingua, ma è dove si dispone di un array bidimensionale 2+ con diverse lunghezze di array nel secondo e al di là di array.
[0] - 0, 1, 2, 3, 4
[1] - 1, 2, 3
[2] - 5, 6, 7, 8, 9, 10
[3] - 1
[4] -
[5] - 23, 4, 7, 8, 9, 12, 15, 14, 17, 18
Potete trovare maggiori informazioni qui: http://msdn.microsoft.com/en-us/library/2s05feca.aspx
anche:
Una matrice irregolare è un array i cui elementi sono array. Gli elementi di una matrice frastagliata possono essere di dimensioni e dimensioni diverse. Una matrice seghettata viene talvolta definita "matrice di matrici". I seguenti esempi mostrano come dichiarare, inizializzare e accedere agli array seghettati.
La seguente è una dichiarazione di una matrice monodimensionale che ha tre elementi, ciascuno dei quali è un array monodimensionale di interi:
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];
o
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
matrice irregolare è una matrice con altri array contenuti all'interno.
Una matrice irregolare è un array in cui il numero di righe è fissa, ma il numero di colonna non è fisso.
Codice in materia di matrice irregolare in C# per l'applicazione sotto forma finestra
int[][] a = new int[3][];
a[0]=new int[5];
a[1]=new int[3];
a[2]=new int[1];
int i;
for(i = 0; i < 5; i++)
{
a[0][i] = i;
ListBox1.Items.Add(a[0][i].ToString());
}
for(i = 0; i < 3; i++)
{
a[0][i] = i;
ListBox1.Items.Add(a[0][i].ToString());
}
for(i = 0; i < 1; i++)
{
a[0][i] = i;
ListBox1.Items.Add(a[0][i].ToString());
}
Come si può vedere nel programma di cui sopra non delle righe è fissato a 3, ma il numero di colonne non è fisso. Così abbiamo preso tre valore diverso di colonne IE 5, 3 e 1. La ListBox1
parola chiave utilizzata in questo codice è per la casella di riepilogo che useremo in forma finestra per vedere il risultato per il clic del tasto che verrà utilizzato anche in la forma della finestra. Tutta la programmazione fatta qui è sul pulsante.
Non si dovrebbe limitare il codice precedente solo ai moduli. Capisci in realtà quante operazioni ha bisogno solo di questa riga 'ListBox1.Items.Add (...)' per finire? È un enorme rallentamento dell'algoritmo. Tutte le operazioni avrebbero dovuto essere tra il processore e la memoria senza l'interfaccia utente coinvolta. – CodeArtist
Anche se la risposta migliore viene scelto dal proprietario domanda, ma ancora voglio presentare il seguente codice per rendere matrice irregolare più chiaro.
using System;
class Program
{
static void Main()
{
// Declare local jagged array with 3 rows.
int[][] jagged = new int[3][];
// Create a new array in the jagged array, and assign it.
jagged[0] = new int[2];
jagged[0][0] = 1;
jagged[0][1] = 2;
// Set second row, initialized to zero.
jagged[1] = new int[1];
// Set third row, using array initializer.
jagged[2] = new int[3] { 3, 4, 5 };
// Print out all elements in the jagged array.
for (int i = 0; i < jagged.Length; i++)
{
int[] innerArray = jagged[i];
for (int a = 0; a < innerArray.Length; a++)
{
Console.Write(innerArray[a] + " ");
}
Console.WriteLine();
}
}
}
L'uscita sarà
1 2
0
3 4 5
matrici dentellate vengono utilizzati per memorizzare i dati in file di lunghezza variabile.
Per ulteriori informazioni, verificare this post at MSDN blog.
Una matrice irregolare è quello in cui si dichiara il numero di righe durante dichiarazione ma si dichiara numero di colonne in fase di esecuzione o anche per scelta dall'utente, semplicemente la sua media quando si desidera diverso numero di colonne in ogni matrice irregolare è adatto in tal caso
int[][] a = new int[6][];//its mean num of row is 6
int choice;//thats i left on user choice that how many number of column in each row he wanna to declare
for (int row = 0; row < a.Length; row++)
{
Console.WriteLine("pls enter number of colo in row {0}", row);
choice = int.Parse(Console.ReadLine());
a[row] = new int[choice];
for (int col = 0; col < a[row].Length; col++)
{
a[row][col] = int.Parse(Console.ReadLine());
}
}
La matrice frastagliata è una matrice multidimensionale con un diverso numero di righe.
La risposta di Yoru sta affermando le stesse cose che altre risposte hanno dichiarato dal 2010 - quindi non aggiungete nulla di valore. –
Gli matrici seghettate esistono praticamente in qualsiasi linguaggio che utilizza le matrici –
Si noti inoltre che altre cose possono essere frastagliate come i percorsi XML (alcuni elementi possono avere sub-figli e altri no), elenchi (di elenchi), dizionari e simili . Ho pensato che ti avrei aiutato ad associare concetti disparati come simili, o con strutture sottostanti simili. – jcolebrand
Un'ottima lettura su array frastagliati di Eric Lippert [qui] (https://blogs.msdn.microsoft.com/ericlippert/2009/08/17/arrays-of-arrays/). – RBT