Kako raditi s nazubljenim nizovima u C #

Niz se može definirati kao sekvencijalna zbirka elemenata istog tipa podataka. Elementi niza pohranjeni su na susjednim memorijskim mjestima. Nizovi mogu biti jednodimenzionalni ili višedimenzionalni. Nazubljeni niz je posebna vrsta višedimenzionalnog niza u kojem svaki od nizova (nazubljeni niz zapravo je niz nizova) može biti različite veličine.

Možete imati nazubljene nizove na bilo kojem računalnom jeziku koji pruža podršku za nizove. Nazubljeni niz (poznat i kao ragged array) je niz nizova u kojem nizovi članova zauzvrat mogu biti različitih dimenzija i veličina. Možete poboljšati izvedbu višedimenzionalnih nizova s ​​nazubljenim nizovima.

Početak rada s nazubljenim nizovima u C #

U ovom ćemo odjeljku istražiti kako prijaviti, inicijalizirati i pristupiti nazubljenim nizovima. Kao što znamo, nazubljeni niz sastoji se od niza nizova sličnih ili različitih veličina. Drugim riječima, u nazubljenom nizu broj redaka je fiksan, ali broj stupaca može varirati. Kada deklarirate nazubljeni niz, možete samo prijaviti broj redaka niza i radije odrediti broj stupaca za vrijeme izvođenja.

Javite nam sve što smo do sada naučili na nazubljenim nizovima s nekoliko primjera koda. Razmotrite sljedeći niz.

string[][] str = new string[5][];

Proglasili ste redove niza. U ovom polju postoji 5 redaka koji zauzvrat mogu sadržavati 5 nizova niza različitih duljina. Pogledajmo sada kako možemo deklarirati 5 nizova u polju nazvanom str, svaki različite duljine. Sljedeći isječak koda ilustrira kako se to može postići.

str[0] = new string[5];

str[1] = new string[10];

str[2] = new string[20];

str[3] = new string[50];

str[4] = new string[10];

Sada možete pohraniti nizove različitih duljina u nazubljeni niz kao što je prikazano u isječku koda u nastavku.

str[0][0] = "Pune";

str[1][0] = "Kolkata";

str[2][0] = "Bangalore";

str[3][0] = "The pink city named Jaipur";

str[4][0] = "Hyderabad";

Evo kompletnog popisa kodova koji ilustrira kako možete deklarirati nazubljeni niz, pohraniti podatke, a zatim ih dohvatiti i prikazati u konzoli.

public static void Main(string[] args)

       {

         //First declare the jagged array

           string[][] str = new string[5][];

           str[0] = new string[5];

           str[1] = new string[10];

           str[2] = new string[20];

           str[3] = new string[50];

           str[4] = new string[10];

           //Now store data in the jagged array

           str[0][0] = "Pune";

           str[1][0] = "Kolkata";

           str[2][0] = "Bangalore";

           str[3][0] = "The pink city named Jaipur";

           str[4][0] = "Hyderabad";

            //Lastly, display the content of each of the string arrays inside the jagged array

           for (int i = 0; i < 5; i++)

               Console.WriteLine(str[i][0]);

           Console.Read();

       }

Kao što možete vidjeti u gornjem programu, broj redaka nazubljenog niza je fiksan, ali broj stupaca varira. Ovaj primjer predstavlja dvodimenzionalni nazubljeni niz. Ako biste koristili uobičajeni dvodimenzionalni niz, morali biste potrošiti 5 x 50, tj. 250 bajtova. Razlog je taj što biste trebali imati prostor od 50 bajtova u svakom od nizova u nazubljenom nizu da bi se smjestio najveći niz. U ovom primjeru najveći je niz veličine 50. Suprotno tome, ako koristite nazubljeni niz, na kraju potrošite samo 95 bajtova! Zanimljivo, zar ne?

Kada izvršite gornji program, nizovi pohranjeni u nazubljenom nizu prikazuju se u prozoru konzole.

Još jedan primjer - nazubljeni niz cijelih brojeva

Slično kao što smo stvorili nazubljeni niz nizova, također možete stvoriti nazubljeni niz cijelih brojeva. U stvari, možete imati nazubljeni niz bilo koje vrste podataka. Evo kako možete deklarirati nazubljeni niz u C #.

int [][] numbersArray;

Sljedeći isječak koda ilustrira kako možete proglasiti cjelobrojni nazubljeni niz, tj. Nazubljeni niz koji zauzvrat može pohraniti nizove cijelih brojeva različitih elemenata.

int[][] numbersArray = new int[5][];

for (int i = 0; i < numbersArray.Length; i++)

   {

         numbersArray[i] = new int[10 * (i + 1)];

   }

Gornji isječak koda stvara cjelobrojni nazubljeni niz nazvan numbersArray koji zauzvrat sadrži cjelobrojne nizove različitih veličina.