Vícerozměrné pole
Úvod
V této kapitole se naučíme pracovat s různými druhy vícerozměrných polí.
Deklarace dvourozměrného pole
Dvourozměrné pole se deklaruje podobně jako jednorozměrné. Jediný rozdíl je ten, že musíme nějak oddělit dva rozměry (2 dimenze). Např. takto deklarujeme prázdné dvourozměrné pole. Jediné co přibylo je čárka a údaj o velikosti druhého rozměru:
// Dvourozměrné pole o velikosti 5x5
int[,] pole = new int[5, 5];
K prvkům se přistupuje také podobně jako v jednorozměrném poli:
// Takto přistoupíme k prvku na souřadnicích [2,3] a nastavíme mu hodnotu 42
pole[2, 3] = 42;
Stejně jako u jednorozměrných polí se indexuje od nuly, tudíž souřadnicemi [2,3] přistoupíme k prvku, který je třetí v prvním rozměru a čtvrtý v druhém.
Dvourozměrné pole se dá deklarovat rovnou i s hodnotami, stejně jako to fungovalo u jednorozměrných polí:
// Dvourozměrné pole o velikosti 3x3 předem naplněné
int[,] pole = new int[,] { { 51, 42, 69 }, { 999, 666, 888 }, { 360, 420, 480 } };
Pokud bychom chtěli v tomto poli přistoupit k číslu 360, museli bychom použít
Pokud bychom chtěli v tomto poli přistoupit k číslu 360, museli bychom použít souřadnice [2,0].
Metoda GetLength()
Často se stane, že při práci s vícerozměrnými poli nebudeme vědět, jak je pole velké v jakých směrech. V jednorozměrném poli nám stačila vlastnost Length. Abychom tyto hodnoty zjistili ve vícerozměrném poli, musíme použít metodu GetLength(), jež jako svůj parametr přejímá dimenzi:
// Pole 2x2
int[,] pole = { {6, 7}, {3, 9} };
// Rozměry
int delka = pole.getLength(0);
int vyska = pole.getLength(1);
Vlastnost Length u vícerozměrného pole vrací počet všech prvků v poli. Tzn. u našeho pole 2x2 nám vrátí číslo 4.
N-rozměrné pole
Jestli jste si mysleli, že pole může být pouze jedno či dvourozměrné, tak jste se mýlili. Pole může mít totiž nespočet dimenzí. Pro ukázku je zde pole, které má 34 dimenzí a stále funguje. Avšak pro většinu lidí už nemá takové pole reálné využití:
int[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,] nesmyslneVelkePole;
Toto pole ještě nemá určené velikosti daných dimenzí, tzn. není inicializované.
Pole polí
Toto je speciální druh vícerozměrných polí, jelikož všechny pole v tomto poli nemusí mít stejnou velikost. Můžeme si to ukázat např. na kinosálu. Tam nemají všechny řady stejně sedadel neboť některé chybí kvůli vchodu do sálu. Abychom popsali, jak se jmenují lidé, co v tomto sálu sedí, by nám normální dvourozměrné pole sice stačilo, ale zůstali by v něm místa, které ani neexistují. Takovéto pole můžeme založit následujícím způsobem:
// Deklarace pole, ve kterém je 5 polí o kterých nevíme, jak velká jsou
int[][] pole = new int[5][];
Dalším příkladem může být hotel, který má X pater a v každém patře je Y pokojů. Velikost X bude vždy jedna, ale každé patro může mít jiný počet pokojů, tudíž pro každé X bude jiná velikost Y:
// Předem naplněné pole polí
int[][] hotel = new int[][] {
new int[]{101, 102, 103, 104, 105, 106},
new int[]{201, 202, 203},
new int[]{301, 302, 303}
};
// Tímto zjistíme, jaké je číslo čtvrtého pokoje v prvním patře
int cisloPokoje = hotel[0][3];
Shrnutí
V této kapitole jsme se dozvěděli, jak používat n-rozměrné pole a jak zjistit velikosti jejich dimenzí. Také jsme si ukázali jak fungují pole polí též někdy nazývané jagged array.