multidimensional array
Főnév
multidimensional array (tsz. multidimensional arrays)
A többdimenziós tömb egy olyan adatszerkezet, amelyben az elemek több szinten vannak elrendezve. A C++ többdimenziós tömbjei lehetővé teszik mátrixok, táblázatok, térbeli adatok és egyéb szerkezetek hatékony tárolását és kezelését.
1. Kétdimenziós tömbök (int matrix[3][3])
A kétdimenziós tömbök a legtöbbet használt többdimenziós tömbök C++-ban. Ezek egy mátrixot vagy táblázatot reprezentálnak.
Kétdimenziós tömb deklarálása és inicializálása
#include <iostream>
int main() {
int matrix[3][3] = { // 3 sor, 3 oszlop
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Kiíratás két ciklussal
for (int sor = 0; sor < 3; sor++) {
for (int oszlop = 0; oszlop < 3; oszlop++) {
std::cout << matrix[sor][oszlop] << " ";
}
std::cout << std::endl;
}
return 0;
}
Kimenet:
1 2 3 4 5 6 7 8 9
✅ Magyarázat: - A matrix[3][3] egy 3x3-as mátrix, ahol az első index a sor, a második az oszlop. - A két for ciklus végigjárja a mátrixot.
2. Kétdimenziós tömb inicializálás más módon
Ha nem adunk meg minden elemet, a többi automatikusan 0 lesz.
int matrix[3][3] = { {1, 2}, {4, 5} };
Ez egyenértékű ezzel:
int matrix[3][3] = {
{1, 2, 0},
{4, 5, 0},
{0, 0, 0}
};
Ha az egész tömböt nullázni szeretnénk:
int matrix[3][3] = {0};
Ez minden elemet nullára állít.
3. Többdimenziós tömbök kezelése függvényekkel
Többdimenziós tömbök függvényeknek történő átadása során meg kell adnunk az oszlopok számát, hogy a fordító megértse a memória elrendezést.
Mátrix kiíratása függvény segítségével
#include <iostream>
void kiirMatrix(int matrix[3][3], int sorok, int oszlopok) {
for (int sor = 0; sor < sorok; sor++) {
for (int oszlop = 0; oszlop < oszlopok; oszlop++) {
std::cout << matrix[sor][oszlop] << " ";
}
std::cout << std::endl;
}
}
int main() {
int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
kiirMatrix(matrix, 3, 3);
return 0;
}
✅ Fontos: - A void kiirMatrix(int matrix[3][3], int sorok, int oszlopok) függvényben meg kell adni az oszlopok számát ([3]), különben a fordító nem tudja értelmezni az adatszerkezetet.
4. Dinamikus többdimenziós tömbök (new és delete)
Statikus tömböknél az oszlopok és sorok mérete előre meghatározott, de ha dinamikusan szeretnénk létrehozni egy tömböt futásidőben, akkor new és delete használatára van szükség.
Dinamikus kétdimenziós tömb létrehozása
#include <iostream>
int main() {
int sorok = 3, oszlopok = 3;
// Dinamikus tömb lefoglalása
int** matrix = new int*[sorok];
for (int i = 0; i < sorok; i++) {
matrix[i] = new int[oszlopok];
}
// Feltöltés
for (int i = 0; i < sorok; i++) {
for (int j = 0; j < oszlopok; j++) {
matrix[i][j] = i * oszlopok + j + 1;
}
}
// Kiíratás
for (int i = 0; i < sorok; i++) {
for (int j = 0; j < oszlopok; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
// Memória felszabadítása
for (int i = 0; i < sorok; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
✅ Magyarázat: 1. Az new int*[sorok] lefoglal egy tömböt a soroknak. 2. A for ciklusban new int[oszlopok] minden sorhoz egy oszloptömböt foglal le. 3. A tömb használható ugyanúgy, mint egy statikus kétdimenziós tömb. 4. A delete[] felszabadítja a memóriát.
Ez a módszer akkor hasznos, ha a tömb mérete futásidőben változik!
5. Többdimenziós tömbök (3D és több)
C++ támogatja a háromdimenziós és még több dimenziós tömböket is.
Háromdimenziós tömb (3D)
#include <iostream>
int main() {
int tomb[2][3][4] = {
{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} },
{ {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} }
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
std::cout << tomb[i][j][k] << " ";
}
std::cout << std::endl;
}
std::cout << "---" << std::endl;
}
return 0;
}
Kimenet:
1 2 3 4 5 6 7 8 9 10 11 12 --- 13 14 15 16 17 18 19 20 21 22 23 24 ---
✅ Magyarázat: - A tömb 3 dimenzióval rendelkezik: tomb[2][3][4] - 2 darab „réteg” - 3 darab „sor” minden rétegben - 4 darab „oszlop” minden sorban
6. Összegzés
✅ A többdimenziós tömbök segítenek mátrixok és összetett adatszerkezetek tárolásában.
✅ A statikus tömbök előre meghatározott méretűek, míg a dinamikus tömbök futásidőben jönnek létre.
✅ A dinamikus tömbök esetén new és delete kulcsszavakat kell használni a memória felszabadításához.
✅ A háromdimenziós és többdimenziós tömbök ritkábban használatosak, de jól alkalmazhatók térbeli adatokhoz.
- multidimensional array - Szótár.net (en-hu)
- multidimensional array - Sztaki (en-hu)
- multidimensional array - Merriam–Webster
- multidimensional array - Cambridge
- multidimensional array - WordNet
- multidimensional array - Яндекс (en-ru)
- multidimensional array - Google (en-hu)
- multidimensional array - Wikidata
- multidimensional array - Wikipédia (angol)