Tablica to typ struktury danych używany do przechowywania kolekcji elementów tego samego typu danych przechowywanych w sąsiadujących lokalizacjach pamięci. Tablice mogą być jednowymiarowe lub wielowymiarowe w zależności od liczby kierunków, w których tablica może się rozwijać. W tym artykule przyjrzymy się tablicom wielowymiarowym, takim jak tablice dwuwymiarowe i tablice trójwymiarowe.
Co to jest tablica wielowymiarowa w C++?
Tablica wielowymiarowa to tablica posiadająca więcej niż jeden wymiar. Jest to jednorodny zbiór elementów, w którym dostęp do każdego elementu odbywa się za pomocą wielu indeksów.
Deklaracja tablicy wielowymiarowej
datatype arrayName [ size1][size2]...[sizeN];>
Gdzie,
- typ danych: Typ danych, które mają być przechowywane w tablicy.
- Nazwa tablicy: Nazwa tablicy.
- rozmiar1, rozmiar2,…, rozmiarN: Rozmiar każdego wymiaru.
Przykład:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Rozmiar tablicy wielowymiarowej
Rozmiar tablicy jest równy rozmiarowi typu danych pomnożonemu przez całkowitą liczbę elementów, które można przechowywać w tablicy. Całkowitą liczbę elementów tablicy możemy obliczyć, mnożąc rozmiar każdego wymiaru tablicy wielowymiarowej.
Na przykład:
int arr1[2][4];>
- Tablica int tablica1[2] [4] może przechowywać łącznie (2*4) = 8 elementy.
- W C++ typ danych int zajmuje 4 bajty i mamy 8 elementów w tablicy „arr1” typu int.
- Całkowity rozmiar = 4*8 = 32 bajty .
int arr2[2][4][8];>
- Tablica wew tablica2[2] [4] [8] może przechowywać łącznie (2*4*8) = 64 elementy.
- Całkowity rozmiar „ tablica2 ' = 64*4 = 256 bajtów .
Aby zweryfikować powyższe obliczenia, możemy skorzystać rozmiar() metoda znalezienia rozmiaru tablicy.
C++
// C++ program to verify the size of multidimensional> // arrays> #include> using> namespace> std;> > int> main()> {> >// creating 2d and 3d array> >int> arr1[2][4];> >int> arr2[2][4][8];> > >// using sizeof() operator to get the size of the above> >// arrays> >cout <<>'Size of array arr1: '> <<>sizeof>(arr1)> ><<>' bytes'> << endl;> >cout <<>'Size of array arr2: '> <<>sizeof>(arr2)> ><<>' bytes'>;> > >return> 0;> }> |
>
>Wyjście
powodzenia
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Najpopularniejsze tablice wielowymiarowe to:
- Tablica dwuwymiarowa
- Trójwymiarowa tablica
Tablica dwuwymiarowa (lub tablica 2D)
Dwuwymiarowa tablica w C++ to zbiór elementów zorganizowanych w wiersze i kolumny. Można go przedstawić jako tabelę lub siatkę, gdzie dostęp do każdego elementu odbywa się za pomocą dwóch indeksów: jednego dla wiersza i jednego dla kolumny. Podobnie jak tablica jednowymiarowa, indeksy tablicy dwuwymiarowej również mieszczą się w zakresie od 0 do n-1 zarówno dla wierszy, jak i kolumn.

Składnia tablicy 2D
typ_danych nazwa_tablicy[ N ][ M ];
Gdzie,
- N: Liczba rzędów.
- M: Liczba kolumn.
Tablicę 2D możemy zadeklarować statycznie i dynamicznie. W deklaracji statycznej pamięć jest przydzielana w czasie kompilacji, a w przypadku pamięci dynamicznej w czasie wykonywania. Powyżej przedstawiono składnię statycznej deklaracji tablicy 2D. Aby dowiedzieć się, jak dynamicznie zadeklarować tablicę 2d, zobacz Ten artykuł.
Inicjalizacja tablic dwuwymiarowych w C++
Poniżej podano różne sposoby inicjowania tablicy 2D:
string.zawiera Java
- Korzystanie z listy inicjatorów
- Korzystanie z pętli
1. Zainicjuj tablicę 2D, korzystając z listy inicjatorów
Tablicę 2D możemy zainicjować za pomocą listy inicjatorów na dwa sposoby. Poniżej znajduje się pierwsza metoda inicjowania tablicy 2D przy użyciu listy inicjatorów.
Pierwsza metoda: Poniższa tablica ma 2 wiersze i 4 kolumny. Elementy są wypełniane w ten sposób, że pierwsze 4 elementy są wypełniane w pierwszym rzędzie, a kolejne 4 elementy w drugim rzędzie.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> Druga metoda: Poniższy sposób jest czystszym sposobem inicjalizacji tablicy 2D. Zagnieżdżona lista reprezentuje elementy w wierszu, a liczba znajdujących się w niej elementów jest równa liczbie kolumn w tablicy 2D. Liczba zagnieżdżonych list reprezentuje liczbę kolumn.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. Inicjalizacja tablicy 2D za pomocą pętli
Możemy także zainicjować tablicę 2D za pomocą pętli. Aby zainicjować tablicę 2D, musimy użyć dwóch zagnieżdżonych pętli, a zagnieżdżone pętle są równe wymiarowi. Na przykład, aby zainicjować tablicę 3D, musimy użyć trzech zagnieżdżonych pętli. Zobaczmy przykład.
Przykład: W poniższym przykładzie inicjujemy tablicę 2D wartością 1. Zewnętrzna pętla służy do śledzenia wierszy i=0 oznacza pierwszy wiersz ze względu na indeksowanie 0, podobnie j=0 oznacza pierwszą kolumnę i połączenie tego x [0][0] reprezentuje pierwszą komórkę tablicy 2D.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Dostęp do elementów tablic dwuwymiarowych w C++
Dostęp do elementów tablicy dwuwymiarowej możemy uzyskać za pomocą indeksów wierszy i kolumn. Jest to podobne do pozycji elementu macierzy, z tą tylko różnicą, że tutaj indeksowanie zaczyna się od 0.
Składnia:
array_name[i][j];>
Gdzie,
- I: Indeks wiersza.
- J: Indeks kolumny.
Przykład: Poniżej znajduje się indeks elementów drugiego rzędu i trzeciej kolumny.
int x[1][2];>
Rozumiemy to za pomocą kodu, drukując elementy tablicy 2D.
Przykład tablicy 2D
C++
// c++ program to illustrate the two dimensional array> #include> using> namespace> std;> > int> main()> {> > >int> count = 1;> > >// Declaring 2D array> >int> array1[3][4];> > >// Initialize 2D array using loop> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >array1[i][j] = count;> >count++;> >}> >}> > >// Printing the element of 2D array> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >cout << array1[i][j] <<>' '>;> >}> >cout << endl;> >}> > >return> 0;> }> |
>
>Wyjście
1 2 3 4 5 6 7 8 9 10 11 12>
Wyjaśnienie: W powyższym kodzie zainicjowaliśmy licznik przez „1” i zadeklarowaliśmy tablicę 2D z 3 wierszami i 4 kolumnami, a następnie zainicjowaliśmy tablicę wartością licznika i zwiększaliśmy wartość licznika w każdej iteracji pętli. Następnie drukujemy tablicę 2D za pomocą zagnieżdżonej pętli, a na poniższym wyjściu widzimy, że są 3 wiersze i 4 kolumny.
Złożoność czasowa: O(n*m)
Złożoność przestrzeni: O(n*m)
gdzie n to liczba wierszy, a m to liczba kolumn.
Tablica trójwymiarowa w C++
Tablica 3D to struktura danych przechowująca elementy w trójwymiarowej strukturze przypominającej prostopadłościan. Można to sobie wyobrazić jako zbiór wielu dwuwymiarowych tablic ułożonych jedna na drugiej. Każdy element tablicy 3D jest identyfikowany za pomocą trzech indeksów: indeksu wiersza, indeksu kolumny i indeksu głębokości.

aktorka Zeenat Aman
Deklaracja tablicy trójwymiarowej w C++
Aby zadeklarować tablicę 3D w C++, musimy określić jej trzeci wymiar wraz z wymiarami 2D.
Składnia:
dataType arrayName[d][r];>
- typ danych: Typ danych, które mają być przechowywane w każdym elemencie.
- Nazwa tablicy: Nazwa tablicy
- D: Liczba tablic 2D lub głębokość szyku.
- R: Liczba wierszy w każdej tablicy 2D.
- C: Liczba kolumn w każdej tablicy 2D.
Przykład:
int array[3][5][2];>
Inicjalizacja tablicy trójwymiarowej w C++
Aby zainicjować tablicę 3D w C++, postępujemy zgodnie z tymi samymi metodami, których użyliśmy do inicjalizacji tablicy 2D. W tablicy 3D mamy jeszcze jeden wymiar, więc musimy dodać jeszcze jedną zagnieżdżoną listę elementów.
Tablicę 3D w C można zainicjować za pomocą:
- Lista inicjatorów
- Pętle
Inicjalizacja tablicy 3D przy użyciu listy inicjatorów
Metoda 1: W tej metodzie musimy zapisać całkowitą liczbę elementów w nawiasach klamrowych, a każdy element jest umieszczany na swoim miejscu zgodnie z podanym wymiarem.
int x[3][5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30};> Metoda 2 (lepsza) : W tej metodzie podzieliliśmy elementy za pomocą zagnieżdżonych list, co jest łatwe do odczytania.
int x[3][5][2] = { { {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} } , { {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19} } , { {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 30} } , } ;> Inicjalizacja tablicy 3D za pomocą pętli
Ta metoda jest taka sama, jak inicjowanie tablicy 2D przy użyciu pętli z jeszcze jedną zagnieżdżoną pętlą dla trzeciego wymiaru.
int x[3][5][2]; for (int i = 0; i <3; i++) { for (int j = 0; j <5; j++) { for (int k = 0; k <2; k++) { x[i][j][k] = (some_value) ; } } }> Dostęp do elementów w tablicy trójwymiarowej w C++
Dostęp do elementów w tablicach 3D jest tak prosty, jak dostęp do elementów w tablicach 2D. W tym przypadku musimy wykonać dodatkową pracę, dodając jeszcze jedną zagnieżdżoną pętlę, aby śledzić trzeci wymiar.
C++
wiek Sary Ali Khan
// C++ program to illustrate the 3d array> #include> using> namespace> std;> > int> main()> {> > >int> count = 0;> >// declaring 3d array> >int> x[2][2][3];> > >// initializing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >x[i][j][k] = count;> >count++;> >}> >}> >}> > >// printing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >printf>(>'x[%d][%d][%d] = %d
'>, i, j, k,> >x[i][j][k]);> >count++;> >}> >}> >}> > >return> 0;> }> |
>
>Wyjście
x[0][0][0] = 0 x[0][0][1] = 1 x[0][0][2] = 2 x[0][1][0] = 3 x[0][1][1] = 4 x[0][1][2] = 5 x[1][0][0] = 6 x[1][0][1] = 7 x[1][0][2] = 8 x[1][1][0] = 9 x[1][1][1] = 10 x[1][1][2] = 11>
Wyjaśnienie: W powyższym kodzie zainicjowaliśmy tablicę 3D za pomocą pętli, jak wyjaśniono powyżej, z liczbą od 0 do 7 za pomocą zmiennej count, a następnie uzyskaliśmy dostęp do elementów za pomocą tej samej pętli, która została użyta do inicjalizacji tablicy 3D. Jedyna różnica polega na tym, że zamiast przypisywać element w określonej pozycji, powiedzmy x[0][0][1]=1 drukujemy element przechowywany w tym miejscu, jak widać na poniższym wyjściu.