Taulukko on eräänlainen tietorakenne, jota käytetään tallentamaan vierekkäisiin muistipaikkoihin tallennettujen samantyyppisten kohteiden kokoelma. Taulukot voivat olla yksiulotteisia tai moniulotteisia sen mukaan, kuinka monta suuntaan taulukko voi kasvaa. Tässä artikkelissa tutkimme moniulotteisia taulukoita, kuten kaksiulotteisia taulukoita ja kolmiulotteisia taulukoita.
Mikä on moniulotteinen taulukko C++:ssa?
Moniulotteinen taulukko on taulukko, jossa on useampi kuin yksi ulottuvuus. Se on homogeeninen kohteiden kokoelma, jossa jokaista elementtiä käytetään useiden indeksien avulla.
Moniulotteinen taulukkoilmoitus
datatype arrayName [ size1][size2]...[sizeN];>
missä,
- tietotyyppi: Taulukkoon tallennettavien tietojen tyyppi.
- arrayName: Taulukon nimi.
- koko1, koko2,…, kokoN: Jokaisen ulottuvuuden koko.
Esimerkki:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Moniulotteisen taulukon koko
Taulukon koko on yhtä suuri kuin tietotyypin koko kerrottuna taulukkoon tallennettavien elementtien kokonaismäärällä. Voimme laskea taulukon elementtien kokonaismäärän kertomalla moniulotteisen taulukon kunkin ulottuvuuden koon.
Esimerkiksi:
int arr1[2][4];>
- Matriisi int arr1[2][4] voi tallentaa yhteensä (2*4) = 8 elementtejä.
- C++:ssa int-tietotyyppi vie 4 tavua ja taulukossa on 8 elementtiä 'arr1' int-tyyppistä.
- Kokonaiskoko = 4*8 = 32 tavua .
int arr2[2][4][8];>
- Array int arr2[2][4][8] voi tallentaa yhteensä (2*4*8) = 64 elementtiä.
- Kokonaiskoko ' arr2 ' = 64*4 = 256 tavua .
Yllä olevan laskelman tarkistamiseksi voimme käyttää koko() menetelmä taulukon koon selvittämiseksi.
C++
regressiolauseke javassa
// 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;> }> |
>
>Lähtö
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Yleisimmin käytetyt moniulotteiset taulukot ovat:
- Kaksiulotteinen taulukko
- Kolmiulotteinen taulukko
Kaksiulotteinen taulukko (tai 2D-taulukko)
Kaksiulotteinen taulukko C++:ssa on kokoelma riveihin ja sarakkeisiin järjestettyjä elementtejä. Se voidaan visualisoida taulukkona tai ruudukkona, jossa jokaiseen elementtiin päästään kahdella indeksillä: yksi riville ja toinen sarakkeelle. Kuten yksiulotteisen taulukon, myös kaksiulotteisen taulukon indeksit vaihtelevat välillä 0 - n-1 sekä riveille että sarakkeille.

2D-taulukon syntaksi
data_tyyppi taulukon_nimi[ n ][ m ];
Missä,
- n: Rivien määrä.
- m: Kolumnien numerot.
Voimme ilmoittaa 2D-taulukon staattisesti ja dynaamisesti. Staattisessa määrittelyssä muisti varataan käännösajan aikana ja dynaamisessa muisti varataan ajon aikana. Yllä oleva on syntaksi 2D-taulukon staattiselle ilmoitukselle. Lisätietoja 2d-taulukon ilmoittamisesta dynaamisesti on kohdassa Tämä artikla.
Kaksiulotteisten taulukoiden alustus C++:ssa
Alla on esitetty erilaisia tapoja alustaa 2D-taulukko:
- Alustusluettelon käyttäminen
- Silmukoiden käyttö
1. Alusta 2D-taulukko Initializer-luettelon avulla
Voimme alustaa 2D-taulukon alustusluettelon avulla kahdella tavalla. Alla on ensimmäinen menetelmä 2D-taulukon alustamiseksi alustusluettelon avulla.
Ensimmäinen menetelmä: Alla olevassa taulukossa on 2 riviä ja 4 saraketta. Elementit täytetään siten, että ensimmäiset 4 elementtiä täytetään ensimmäisellä rivillä ja seuraavat 4 elementtiä toisella rivillä.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> Toinen menetelmä: Alla oleva tapa on puhtaampi tapa alustaa 2D-taulukko, jossa sisäkkäinen lista edustaa rivin elementtejä ja sen sisällä olevien elementtien lukumäärä on yhtä suuri kuin 2D-taulukon sarakkeiden lukumäärä. Sisäkkäisten luetteloiden määrä edustaa sarakkeiden määrää.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. 2D-taulukon alustus silmukoiden avulla
Voimme myös alustaa 2D-taulukon silmukoiden avulla. 2D-taulukon alustamiseksi meidän on käytettävä kahta sisäkkäistä silmukkaa ja sisäkkäiset silmukat ovat yhtä suuria kuin mitat. Esimerkiksi 3D-taulukon alustamiseksi meidän on käytettävä kolmea sisäkkäistä silmukkaa. Katsotaanpa esimerkkiä.
Esimerkki: Alla olevassa esimerkissä olemme alustaneet 2D-taulukon arvolla 1. Ulkosilmukkaa käytetään seuraamaan rivejä i=0 tarkoittaa ensimmäistä riviä, koska 0 indeksoi samalla tavalla j=0 tarkoittaa ensimmäistä saraketta ja yhdistämällä tämän x [0][0] edustaa 2D-taulukon ensimmäistä solua.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Kaksiulotteisten taulukoiden elementtien käyttäminen C++:ssa
Voimme käyttää 2-ulotteisen taulukon elementtejä rivi- ja sarakeindekseillä. Se on samanlainen kuin matriisielementin sijainti, mutta ainoa ero on, että tässä indeksointi alkaa 0:sta.
Syntaksi:
array_name[i][j];>
missä,
- minä: Rivin indeksi.
- j: Sarakkeen indeksi.
Esimerkki: Alla on toisen rivin ja kolmannen sarakkeen elementtien indeksi.
int x[1][2];>
Ymmärretään tämä käyttämällä koodia tulostamalla 2D-taulukon elementtejä.
Esimerkki 2D-taulukosta
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;> }> |
>
>Lähtö
1 2 3 4 5 6 7 8 9 10 11 12>
Selitys: Yllä olevassa koodissa olemme alustaneet laskennan arvolla '1' ja ilmoittaneet 2D-taulukon, jossa on 3 riviä ja 4 saraketta, minkä jälkeen alustamme taulukon laskenta-arvolla ja laskun lisäysarvolla silmukan jokaisessa iteraatiossa. Sitten tulostetaan 2D-taulukko sisäkkäisen silmukan avulla ja alla olevasta tuloksesta nähdään, että riviä on 3 ja saraketta.
mylivecricket live-kriketissä
Aika monimutkaisuus: O(n*m)
Tilan monimutkaisuus: O(n*m)
missä n on rivien lukumäärä ja m on sarakkeiden lukumäärä.
Kolmiulotteinen taulukko C++:ssa
3D-taulukko on tietorakenne, joka tallentaa elementit kolmiulotteiseen kuutiomaiseen rakenteeseen. Se voidaan visualisoida kokoelmana useita kaksiulotteisia taulukoita, jotka on pinottu päällekkäin. Jokainen 3D-taulukon elementti tunnistetaan sen kolmella indeksillä: riviindeksi, sarakeindeksi ja syvyysindeksi.

Kolmiulotteisen taulukon ilmoitus C++:ssa
Jotta voimme ilmoittaa 3D-taulukon C++:ssa, meidän on määritettävä sen kolmas ulottuvuus yhdessä 2D-mittojen kanssa.
Syntaksi:
dataType arrayName[d][r];>
- tietotyyppi: Kuhunkin elementtiin tallennettavien tietojen tyyppi.
- arrayName: Taulukon nimi
- d: 2D-taulukoiden lukumäärä tai taulukon syvyys.
- r: Rivien lukumäärä kussakin 2D-taulukossa.
- c: Sarakkeiden lukumäärä kussakin 2D-taulukossa.
Esimerkki:
int array[3][5][2];>
Kolmiulotteisen taulukon alustus C++:ssa
3D-taulukon alustamiseksi C++:ssa noudatamme samoja menetelmiä, joita olemme käyttäneet 2D-taulukon alustamiseen. 3D-taulukossa meillä on yksi ulottuvuus lisää, joten meidän on lisättävä yksi sisäkkäinen elementtiluettelo.
C:n 3D-taulukko voidaan alustaa käyttämällä:
- Alustusluettelo
- Silmukat
3D-taulukon alustaminen Initializer List -luettelon avulla
Tapa 1: Tässä menetelmässä meidän on kirjoitettava elementtien kokonaismäärä aaltosulkeiden sisään ja jokainen kohde sijoitetaan paikoilleen annetun mitan mukaan.
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};> Tapa 2 (parempi) : Tässä menetelmässä elementit on jaettu sisäkkäisillä listoilla ja se on helppo lukea.
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} } , } ;> 3D-taulukon alustus silmukoiden avulla
Tämä menetelmä on sama kuin 2D-taulukon alustaminen käyttämällä silmukoita, joissa on yksi sisäkkäinen silmukka kolmannelle ulottuvuudelle.
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) ; } } }> Kolmiulotteisen taulukon elementtien käyttö C++:ssa
3D-taulukoiden elementtien käyttäminen on yhtä helppoa kuin 2D-taulukoiden elementtien käyttäminen. Tässä meidän on tehtävä ylimääräistä työtä lisäämällä vielä yksi sisäkkäinen silmukka seurataksemme kolmatta ulottuvuutta.
C++
// 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;> }> |
>
>Lähtö
vuoden kuukausi
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>
Selitys: Yllä olevassa koodissa olemme alustaneet 3D-taulukon käyttämällä silmukkaa, kuten yllä on selitetty, numerolla 0-7 käyttämällä count-muuttujaa ja sitten käsiksi käyttänyt elementtejä käyttämällä samaa silmukkaa, jota käytettiin 3D-taulukon alustamiseen. Ainoa ero on, että sen sijaan, että määrität elementin tietyssä paikassa, sano x[0][0][1]=1 tulostamme kyseiseen paikkaan tallennetun elementin alla olevan tulosteen mukaisesti.