Joten aloitetaan eroja yhden ulottuvuuden ja kaksiulotteisen taulukon välillä yhdessä vertailukaavion kanssa.
Vertailukaavio:
Vertailun perusteet | Yksiulotteista | Kaksiulotteinen |
---|---|---|
perustiedot | Säilytä yksittäinen luettelo samankaltaisista tietotyypeistä. | Säilytä "luetteloluettelo" tai "matriisiryhmä" tai "yksiulotteisten taulukoiden ryhmä". |
ilmoitus | / * ilmoitus C ++: ssa kirjoita muuttujan_nimi [koko]; * / / * ilmoituksen Java kirjoita muuttujan_nimi []; muuttuja_nimi = uusi tyyppi [koko]; * / | / * ilmoitus C ++: ssa kirjoita muuttujan_nimi [koko1] [koko2]; * / / * ilmoituksen Java tyyppi muuttuja_nimi = uusi int [koko1] [koko2]; * / |
Vaihtoehtoinen julistus | / * Java int [] a = uusi int [10]; * / | / * Java int [] [] a = uusi int [10] [20]; * / |
Kokonaiskoko bytteinä | Kokonaisbytit = koko (taulukon muuttujan tyyppi) * taulukon koko. | Kokonaisbitit = koko (taulukon muuttujan tietotyyppi) * ensimmäisen indeksin * koon toinen indeksi. |
Vastaanottoparametri | Se voidaan vastaanottaa osoittimessa, kokoisessa taulukossa tai mittasuurassa taulukossa. | Sen vastaanottavan parametrin on määriteltävä taulukon oikea etäisyys. |
Mitat | Yksiulotteinen. | Kaksiulotteinen. |
Yhden ulottuvuuden määrittely (1-D-ryhmä)
Yksiulotteista tai yhdenulotteista taulukkoa pidetään "samankaltaisten tietotyyppien muuttujien luettelona", ja kukin muuttuja voidaan käyttää selvästi määrittämällä sen indeksin neliösulkeissa, jota edeltää kyseisen taulukon nimi.
Keskustellaan C ++ -kontekstissa
// C ++ -tyypin muuttujan_nimi [koko];
Tässä tyypissä ilmoitetaan taulukon muuttujan tietotyyppi, ja koko määrittää ryhmän sisältävän elementin määrän.
Jos esimerkiksi haluamme julistaa joukon, joka sisältää kunkin kuukauden kuukauden saldon.
// esimerkki int month_balance [12];
Kuukausi-tasapaino on array muuttuja, joka pitää 12 kokonaislukua, jotka edustavat kunkin kuukauden saldoa. Nyt, jos haluamme käyttää kuukauden "huhtikuun" saldoa, meidän tarvitsi vain mainita muuttujan nimi ja sen jälkeen neliömerkki, joka sisälsi huhtikuun indeksiarvon eli "month_balance [3]". Mutta koska "huhtikuu" on vuoden neljäs kuukausi, mutta olimme maininneet "[3]", koska kaikilla ryhmillä on 0 ensimmäisen elementin indeksinä.
Java: ssa tämä voidaan tehdä kuten
// ilmoitus Java-tyypin muuttujan_nimi []; muuttuja_nimi = uusi tyyppi [koko];
Aluksi olimme ilmoittaneet matriisimuuttujan sen tyypillä ja sitten olimme osoittaneet sille muistin käyttämällä uutta ja määrittelemällä "uusi" ilmoitetulle taulukon muuttujalle. Otetaan edellä esimerkki, jos haluamme julistaa joukon, joka sisältää saldon kunkin kuukauden kuukaudessa.
// esimerkki int month_balance []; month_balance = new int [12];
Täällä "uusi" allokoi muistin ryhmämuuttujalle "month_balance", joten nyt, mont_balance pitää nyt muistin 12 kokonaisluvun arvoa.
Ariat voidaan alustaa, kun ne on ilmoitettu. Ryhmän alustus on luettelo pilkulla erotetuista arvoista, joita ympäröi kihara suljin.
// esimerkki
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Kaksimittaisen kuvion määritelmä (2-D-sarja)
Sekä C ++ että Java tukevat moniulotteista taulukkoa. Yksi moniulotteisen ryhmän yksinkertaisimmista muodoista on kaksiulotteinen taulukko tai 2-D-ryhmä. Kaksiulotteista taulukkoa voidaan pitää "matriisiryhmänä" tai "moniulotteisten taulukoiden ryhmänä". Kahdenulotteisen matriisimuuttujan julistamiseksi meidän on määritettävä taulukon nimi ja sen jälkeen kaksi neliösuljetta, joissa toinen indeksi on toinen sarakkeiden sulkujoukko.
Kaksiulotteinen taulukko tallennetaan rivipylväsmatriisin muodossa, jossa ensimmäinen indeksi osoittaa rivin ja toinen indeksi osoittaa sarakkeen. Ryhmän toinen tai oikeanpuoleisin indeksi muuttuu erittäin nopeasti verrattuna ensimmäiseen tai vasempaan eniten indeksiin, kun käytät taulukon elementtejä.
// C ++ -tyyppinen muuttujan_nimi [koko1] [koko2];
Haluamme esimerkiksi tallentaa saldon 30 päivän välein vuoden jokaisena kuukautena 2-D-ryhmässä.
// esimerkki int month_balance [12] [30];
Java: ssa saadaan kaksiulotteinen taulukko
// ilmoitus Java-tyypissä muuttuja_nimi = uusi int [size1] [size2]; // esimerkki int month_balance = new int [12] [30];
Koska emme voi siirtää koko taulukkoa parametreina funktiolle, välitetään osoitin taulukon ensimmäiseen elementtiin. Väitteen, joka vastaanottaa kaksiulotteisen ryhmän, on määriteltävä, että se on oikeanpuoleisin ulottuvuus. Oikeanpuoleinen ulottuvuus on tarpeen, koska kääntäjä tarvitsee sen vahvistamaan kunkin rivin pituuden, jos se haluaa indeksoida taulukon oikein. Jos oikeaa hakemistoa ei mainita, kääntäjä ei voi määrittää, missä seuraava rivi alkaa.
// esimerkki Java void receptioning_funct (int a [] [10]) {. . . }
Kun muisti on dynaamisesti allokoitu kaksiulotteiselle ryhmälle Java: ssa, vasen eniten indeksi määritetään, ja loput mitat voidaan allokoida erikseen, eli kaikki taulukon rivit eivät välttämättä ole saman kokoisia.
// esimerkki Java int month_balance = new int [12] []; month_balance [0] = uusi int [31]; month_balance [1] = uusi int [28]; month_balance [2] = uusi int [31]; month_balance [3] = uusi int [30]; month_balance [4] = uusi int [31]; month_balance [5] = uusi int [30]; month_balance [6] = uusi int [31]; month_balance [7] = uusi int [30]; month_balance [8] = uusi int [31]; month_balance [9] = uusi int [30]; month_balance [10] = uusi int [31]; month_balance [11] = uusi int [30]; month_balance [12] = uusi int [31];
Mutta ei ole mitään etua.
Yksiulotteisen ja kaksiulotteisen välineen väliset erot
- Yksiulotteinen matriisi on lista, jonka elementit ovat samantyyppisiä datatyyppejä. Toisaalta kaksiulotteinen taulukko on lista, jonka elementit ovat samanlaisen tietolajin joukko.
- C ++: ssa, kun vastaanottofunktion parametri vastaanottaa yksiulotteisen taulukon, ei ole tarpeen mainita taulukon kokoa, koska kääntäjä ymmärtää, että tyypin ryhmä (mainittu datatyyppi parametrin kanssa) jonkin verran on vastaanotettava. Kaksiulotteisessa taulukossa toinen tai oikea eniten indeksi on määriteltävä, koska kääntäjä tarvitsee tietää, missä yksi rivin pää ja uusi rivi alkaa.
- C ++: ssa yksiulotteinen taulukko tallennetaan viereiseen muistipaikkaan indeksoidussa järjestyksessä, kun taas kaksiulotteinen taulukko tallennetaan myös viereiseen muistipaikkaan, mutta koska kaksiulotteisessa taulukossa on useita rivejä, tallennetaan ensimmäiselle riville seuraa toinen ja kolmas ja niin edelleen.
Huomautus:
Sekä yksiulotteisen taulukon että kaksiulotteisen taulukon siirtäminen funktioon on samanlainen eli molemmat välitetään vain taulukon nimellä
// esimerkki pass_funt (name_of_array);
johtopäätös:
Sekä yksiulotteisessa että kaksiulotteisessa ryhmässä indeksillä on erittäin tärkeä rooli, koska se on ainoa asia, joka spesifisesti tunnistaa ryhmän elementin. Sekä yksiulotteinen että kaksiulotteinen taulukko voidaan alustaa niiden julistuksen aikana.