logo

Tablica wielowymiarowa C++

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.

dwuwymiarowa organizacja tablic w C++

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.

trójwymiarowa organizacja tablic w C++

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ą:

  1. Lista inicjatorów
  2. 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.