Edellytys: Taulukot C-muodossa
Moniulotteista taulukkoa voidaan kutsua taulukoiden matriisiksi, joka tallentaa homogeenista dataa taulukkomuodossa. Moniulotteisten taulukoiden tiedot tallennetaan yleensä muistiin rivi-pääjärjestyksessä.
The N-ulotteisten taulukoiden ilmoittamisen yleinen muoto näkyy alla.
Syntaksi:
data_type array_name[size1][size2]....[sizeN];>
- tietotyyppi : taulukkoon tallennettavien tietojen tyyppi.
- taulukon_nimi : taulukon nimi.
- koko1, koko2,…, kokoN : Kunkin mittasuhteen koko.
Esimerkkejä :
mikä on java hashmap
Two dimensional array: int two_d[10][20]; Three dimensional array: int three_d[10][20][30];>
Moniulotteisten taulukoiden koko:
Moniulotteiseen taulukkoon tallennettavien elementtien kokonaismäärä voidaan laskea kertomalla kaikkien ulottuvuuksien koko.
Esimerkiksi:
- Joukko int x[10][20] voi tallentaa yhteensä (10*20) = 200 elementtiä.
- Samoin array int x[5][10][20] voi tallentaa yhteensä (5*10*20) = 1000 elementtiä.
Saadaksesi taulukon koon tavuina, kerromme yksittäisen elementin koon taulukon elementtien kokonaismäärällä.
Esimerkiksi:
- Taulukon koko int x[10][20] = 10 * 20 * 4 = 800 tavua. (jossa int = 4 tavua)
- Samoin koko int x[5][10][20] = 5 * 10 * 20 * 4 = 4000 tavua. (jossa int = 4 tavua)
Yleisimmin käytetyt moniulotteisen taulukon muodot ovat:
- Kaksiulotteinen taulukko
- Kolmiulotteinen taulukko
Kaksiulotteinen taulukko C-muodossa
A kaksiulotteinen matriisi tai 2D-taulukko C on moniulotteisen taulukon yksinkertaisin muoto. Voimme visualisoida kaksiulotteisen taulukon joukkona yksiulotteisia taulukoita, jotka on järjestetty päällekkäin ja muodostavat taulukon, jossa on 'x'-rivejä ja 'y'-sarakkeita, joissa rivin numero vaihtelee välillä 0 - (x-1) ja sarakkeen numero. vaihtelee välillä 0 - (y-1).

Graafinen esitys kaksiulotteisesta taulukosta, jonka koko on 3 x 3
Kaksiulotteisen taulukon ilmoitus C-muodossa
2D-taulukon ilmoittamisen perusmuoto x rivit ja ja sarakkeet C:ssä on esitetty alla.
Syntaksi:
data_type array_name[x][y];>
missä,
- tietotyyppi: Kuhunkin elementtiin tallennettavien tietojen tyyppi.
- array_name: taulukon nimi
- x: Rivien määrä.
- ja: Kolumnien numerot.
Voimme ilmoittaa kaksiulotteisen kokonaislukutaulukon sanomalla 'x', jossa on 10 riviä ja 20 saraketta, kuten:
Esimerkki:
int x[10][20];>
Huomautus: Tämän tyyppisessä ilmoituksessa taulukolle on varattu muisti pinossa ja taulukon koon tulee olla tiedossa käännöshetkellä, eli taulukon koko on kiinteä. Voimme myös luoda taulukon dynaamisesti C:ssä käyttämällä mainittuja menetelmiä tässä.
Kaksiulotteisten taulukoiden alustus C:ssä
Eri tavat, joilla 2D-taulukko voidaan alustaa, ovat seuraavat:
- Alustusluettelon käyttäminen
- Silmukoiden käyttö
1. 2D-taulukon alustus Initializer List -toiminnolla
Voimme alustaa 2D-taulukon C:ssä käyttämällä alustusluetteloa alla olevan esimerkin mukaisesti.
Ensimmäinen menetelmä:
int x[3][4] = {0, 1 ,2 ,3 ,4 , 5 , 6 , 7 , 8 , 9 , 10 , 11}> Yllä olevassa taulukossa on 3 riviä ja 4 saraketta. Aaltosulkeissa olevat elementit vasemmalta oikealle tallennetaan taulukkoon myös vasemmalta oikealle. Elementit täytetään taulukossa järjestyksessä: ensimmäiset 4 elementtiä vasemmalta täytetään ensimmäiselle riville, seuraavat 4 elementtiä toiselle riville ja niin edelleen.
Toinen menetelmä (parempi) :
int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};> Tämän tyyppinen alustus käyttää sisäkkäisiä aaltosulkeita. Jokainen sisäisten aaltosulkeiden sarja edustaa yhtä riviä. Yllä olevassa esimerkissä on yhteensä kolme riviä, joten sisätukia on kolme sarjaa. Tämän menetelmän etuna on, että se on helpompi ymmärtää.
Huomautus: Alustusluettelon elementtien lukumäärän tulee aina olla pienempi tai yhtä suuri kuin taulukon elementtien kokonaismäärä.
Voimme myös ilmoittaa taulukon määrittelemättä rivin kokoa, jos käytämme listan alustusta. Kääntäjä päättelee automaattisesti taulukon koon tässä tapauksessa:
data_type array_name[][y] = {...} ;> Sarakkeiden lukumäärän määrittäminen on edelleen pakollista.
2. 2D-taulukon alustus silmukoiden avulla
Voimme käyttää mitä tahansa C-silmukkaa 2D-taulukon jokaisen jäsenen alustamiseen yksitellen alla olevan esimerkin mukaisesti.
Esimerkki:
int x[3][4]; for(int i = 0; i <3; i++){ for(int j = 0; j < 4; j++){ x[i][j] = i + j; } }> Tämä menetelmä on hyödyllinen, kun kunkin elementin arvoilla on jokin peräkkäinen suhde.
Kaksiulotteisten taulukoiden elementtien käyttäminen C:ssä
2D-taulukoiden elementtejä käytetään rivi- ja sarakeindekseillä. Jokaiseen 2D-taulukon elementtiin voidaan viitata seuraavasti:
Syntaksi:
array_name[i][j]>
missä,
alleviivaus
- minä: Rivi-indeksi.
- j: Sarakeindeksi.
Esimerkki:
int x[2][1];>
Yllä oleva esimerkki edustaa kolmannella rivillä ja toisessa sarakkeessa olevaa elementtiä.
Huomautus : Tauluissa, jos taulukon koko on N. Sen indeksi on 0 - N-1. Siksi riviindeksille 2 rivinumero on 2+1 = 3. Kaikkien kaksiulotteisen taulukon elementtien tulostamiseksi voimme käyttää sisäkkäisiä silmukoita. Tarvitsemme kaksi' varten 'silmukat. Toinen kulkee rivien läpi ja toinen sarakkeiden läpi.
Koko taulukon tulostamiseksi pääsemme jokaiseen elementtiin yksitellen silmukoiden avulla. Läpikulkujärjestys voi olla rivi-pääjärjestys tai sarake-pääjärjestys vaatimuksesta riippuen. Alla oleva esimerkki havainnollistaa 2D-taulukon rivi-suuren läpikulkua.
Esimerkki:
C
// C Program to print the elements of a> // Two-Dimensional array> #include> int> main(>void>)> {> >// an array with 3 rows and 2 columns.> >int> x[3][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } };> >// output each array element's value> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <2; j++) {> >printf>(>'Element at x[%i][%i]: '>, i, j);> >printf>(>'%d
'>, x[i][j]);> >}> >}> >return> (0);> }> // This code is contributed by sarajadhav12052009> |
>
>Lähtö
Element at x[0][0]: 0 Element at x[0][1]: 1 Element at x[1][0]: 2 Element at x[1][1]: 3 Element at x[2][0]: 4 Element at x[2][1]: 5>
Aika monimutkaisuus: O(N*M) , jossa N(tässä 3) ja M(tässä 2) ovat rivien ja sarakkeiden lukumäärää.
Tilan monimutkaisuus: O(1)
Kuinka 2D-taulukot tallennetaan muistiin?
2-D-taulukon elementit on tallennettava peräkkäin muistiin. Koska tietokoneilla on lineaariset muistiosoitteet, 2-D-taulukot on linearisoitava, jotta ne voidaan tallentaa. On kaksi tapaa saavuttaa taulukon elementtien linearisointi:
- rivi-pääaine- Linearisointitekniikka tallentaa ensin taulukon ensimmäisen rivin, sitten taulukon toisen rivin, sitten kolmannen rivin ja niin edelleen. (eli elementit tallennetaan rivikohtaisesti. Rivit luetellaan sarakkeiden perusteella)
- Kolumni-duuri – Tämä linearisointitekniikka tallentaa ensin ensimmäisen sarakkeen, sitten toisen sarakkeen, sitten kolmannen sarakkeen ja niin edelleen, eli (elementit tallennetaan sarakekohtaisesti. Sarakkeet listataan rivien perusteella)
Tietokone ei seuraa kaikkien taulukon elementtien osoitteita, mutta pitää kirjaa perusosoitteesta (ensimmäisen elementin aloitusosoitteesta) ja laskee elementtien osoitteet tarvittaessa.
Jos haluat tietää lisää, katso artikkeli - 1-D, 2-D ja 3-D elementin osoitteen laskeminen
Kolmiulotteinen taulukko C-muodossa
A Kolmiulotteinen taulukko tai 3D matriisi C:ssä on kokoelma kaksiulotteisia taulukoita. Se voidaan visualisoida useina 2D-taulukoina, jotka on pinottu päällekkäin.

Graafinen esitys kolmiulotteisesta taulukosta, jonka koko on 3 x 3 x 3
Kolmiulotteisen taulukon ilmoitus C-muodossa
Voimme ilmoittaa 3D-taulukon kanssa x Jokaisella on 2D-taulukot ja rivit ja Kanssa sarakkeita käyttämällä alla näkyvää syntaksia.
Syntaksi:
data_type array_name[x][y][z];>
- tietotyyppi: Kuhunkin elementtiin tallennettavien tietojen tyyppi.
- array_name: taulukon nimi
- x: 2D-taulukoiden lukumäärä.
- ja: Rivien lukumäärä kussakin 2D-taulukossa.
- Kanssa: Sarakkeiden lukumäärä kussakin 2D-taulukossa.
Esimerkki:
int array[3][3][3];>
Kolmiulotteisen taulukon alustus C:ssä
Alustus 3D-taulukossa on sama kuin 2D-taulukoissa. Erona on, että mittojen määrän kasvaessa myös sisäkkäisten aaltosulkeiden määrä kasvaa.
C:n 3D-taulukko voidaan alustaa käyttämällä:
- Alustusluettelo
- Silmukat
3D-taulukon alustaminen Initializer List -luettelon avulla
Menetelmä 1 :
int x[2][3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};> Tapa 2 (parempi) :
int x[2][3][4] = { { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }, { {12,13,14,15}, {16,17,18,19}, {20,21,22,23} } };> Jälleen, aivan kuten 2D-taulukot, voimme myös ilmoittaa 3D-taulukot määrittämättä ensimmäisten ulottuvuuksien kokoa, jos käytämme alustusluetteloa alustukseen. Kääntäjä päättelee automaattisesti ensimmäisen ulottuvuuden koon. Mutta meidän on vielä määritettävä loput mitat.
data_type array_name[][y][z] = {....};> 3D-taulukon alustus silmukoiden avulla
Se on myös samanlainen kuin 2D-taulukko, jossa on yksi sisäkkäinen silmukka yhden ulottuvuuden lisäämiseksi.
int x[2][3][4]; for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { for (int k=0; k<4; k++) { x[i][j][k] = (some_value); } } }> Elementtien käyttäminen kolmiulotteisessa taulukossa C:ssä
3D-taulukoiden elementtien käyttö on myös samanlaista kuin 2D-taulukoiden. Erona on, että meidän on käytettävä kolmea silmukkaa kahden silmukan sijaan yhden lisäulottuvuuden saamiseksi 3D-taulukoissa.
Syntaksi:
array_name[x][y][z]>
missä,
- x: 2D-taulukon indeksi.
- ja: Kyseisen 2D-taulukkorivin indeksi.
- Kanssa: 2D-taulukon sarakkeen indeksi.
C
// C program to print elements of Three-Dimensional Array> #include> int> main(>void>)> {> >// initializing the 3-dimensional array> >int> x[2][3][2] = { { { 0, 1 }, { 2, 3 }, { 4, 5 } },> >{ { 6, 7 }, { 8, 9 }, { 10, 11 } } };> >// output each element's value> >for> (>int> i = 0; i <2; ++i) {> >for> (>int> j = 0; j <3; ++j) {> >for> (>int> k = 0; k <2; ++k) {> >printf>(>'Element at x[%i][%i][%i] = %d
'>, i,> >j, k, x[i][j][k]);> >}> >}> >}> >return> (0);> }> |
>
xdxd merkitys
>Lähtö
Element at x[0][0][0] = 0 Element at x[0][0][1] = 1 Element at x[0][1][0] = 2 Element at x[0][1][1] = 3 Element at x[0][2][0] = 4 Element at x[0][2][1] = 5 Element at x[1][0][0] = 6 Element at x[1][0][1] = 7 Element at x[1][1][0] = 8 Element at x[1][1][1] = 9 Element at x[1][2][0] = 10 Element at x[1][2][1] = 11>
Samalla tavalla voimme luoda taulukoita, joilla on kuinka monta ulottuvuutta tahansa. Monimutkaisuus kuitenkin kasvaa myös ulottuvuuksien määrän kasvaessa. Eniten käytetty moniulotteinen taulukko on kaksiulotteinen taulukko.
Myös taulukot liittyvät läheisesti C-kielen osoittimiin. Lisätietoja taulukoiden ja osoittimien suhteesta C:ssä on kohdassa Tämä artikla.