Programování

Jak pracovat se zubatými poli v C #

Pole může být definováno jako sekvenční kolekce prvků stejného datového typu. Prvky pole jsou uloženy v souvislých paměťových místech. Pole mohou být jednorozměrná nebo vícerozměrná. Zubaté pole je speciální typ vícerozměrného pole, ve kterém každé z polí (zubaté pole je vlastně pole) může mít různou velikost.

Můžete mít zubatá pole v libovolném počítačovém jazyce, který poskytuje podporu pro pole. Jagged array (also known as a ragged array) is an array of arrays in which the member arrays in turn can be of different Dimensions and Size. Můžete implementovat vícerozměrná pole jsou zubatá pole pro zlepšení výkonu.

Začínáme se zubatými poli v C #

V této části prozkoumáme, jak deklarovat, inicializovat a přistupovat k zubatým polím. Jak víme, zubaté pole se skládá z řady polí podobných nebo různých velikostí. Jinými slovy, ve zubatém poli je počet řádků pevný, ale počet sloupců se může lišit. Při deklarování zubatého pole můžete pouze deklarovat počet řádků pole a upřednostnit počet sloupců za běhu.

Pojďme pochopit vše, co jsme se zatím naučili na zubatých polích s několika příklady kódu. Zvažte následující pole.

řetězec [] [] str = nový řetězec [5] [];

Deklarovali jste řádky pole. V tomto poli je 5 řádků, které mohou obsahovat 5 řetězcových polí různých délek. Podívejme se nyní, jak můžeme deklarovat 5 polí v poli s názvem str, každé s různou délkou. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

str [0] = nový řetězec [5];

str [1] = nový řetězec [10];

str [2] = nový řetězec [20];

str [3] = nový řetězec [50];

str [4] = nový řetězec [10];

Nyní můžete ukládat řetězce různých délek do zubatého pole, jak je znázorněno v úryvku kódu níže.

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

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

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

str [3] [0] = "Růžové město jménem Jaipur";

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

Tady je kompletní seznam kódů, který ilustruje, jak můžete deklarovat zubaté pole, ukládat data a poté je načítat a zobrazovat v konzole.

public static void Main (řetězec [] args)

       {

// Nejprve deklarujte zubaté pole

řetězec [] [] str = nový řetězec [5] [];

str [0] = nový řetězec [5];

str [1] = nový řetězec [10];

str [2] = nový řetězec [20];

str [3] = nový řetězec [50];

str [4] = nový řetězec [10];

// Nyní ukládejte data do zubatého pole

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

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

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

str [3] [0] = "Růžové město jménem Jaipur";

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

// Nakonec zobrazte obsah každého z řetězcových polí uvnitř zubatého pole

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

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

Console.Read ();

       }

Jak vidíte ve výše uvedeném programu, počet řádků zubatého pole je pevný, ale počet sloupců se liší. Tento příklad představuje dvourozměrné zubaté pole. Pokud byste použili normální dvourozměrné pole, museli byste spotřebovat 5 x 50, tj. 250 bajtů. Důvodem je, že byste museli mít prostor 50 bajtů v každém z polí v zubatém poli, aby se do něj vešel největší řetězec. V tomto příkladu má největší řetězec velikost 50. Naopak při použití zubatého pole nakonec spotřebujete pouhých 95 bajtů! Zajímavé, že?

Když provedete výše uvedený program, v okně konzoly se zobrazí řetězce uložené v zubatém poli.

Další příklad - zubatá řada celých čísel

Podobně jako jsme vytvořili zubaté pole řetězců, můžete také vytvořit zubaté pole celých čísel. Ve skutečnosti můžete mít zubaté pole libovolného datového typu. Tady je způsob, jak můžete deklarovat zubaté pole v C #.

int [] [] numbersArray;

Následující fragment kódu ukazuje, jak můžete deklarovat celé číslo zubaté pole, tj. Zubaté pole, které může zase ukládat pole celých čísel různých prvků.

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

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

   {

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

   }

Výše uvedený fragment kódu vytvoří celočíselné zubaté pole s názvem numbersArray, které zase obsahuje celočíselná pole různých velikostí.