Taulukot ovat yksi yleisimmin käytetyistä tietojen tallennustavoista ohjelman käytön aikana. Niiden avulla voit järjestää samantyyppiset elementit järjestettyyn järjestykseen ja saada nopeasti pääsyn niihin hakemistolla. Hyvin usein, kun kehität sovelluksia tehokkailla ja joustavilla ohjelmointikielillä, jotka sallivat suoran muistin käytön, kuten C ++, sinun on määritettävä taulukon koko.
Välttämätön
C ++ kääntäjä
Ohjeet
Vaihe 1
Määritä taulukon koko kääntöhetkellä laskemalla se operaattorin sizeof avulla. Tämä operaattori palauttaa sille välitetyn argumentin käyttämän muistin määrän (tavuina). Argumentti voi olla joko muuttuja tai tyyppitunniste. Operaattorin sizeof palauttaa objektin käyttämän muistin rajallisen määrän ohjelman suorituksen vaiheessa (ottaen huomioon esimerkiksi rakennekenttien kohdistuksen asetukset), mutta sen laskenta suoritetaan kokoamisvaiheessa.
Vaihe 2
Jos haluat määrittää matriisin koon operaattorin size avulla, jaa koko koko yhden elementin koolla. Esimerkiksi, jos sinulla on seuraava taulukon määritelmä: int aTemp = {10, 20, 0xFFFF, -1, 16}, sen koko voidaan laskea seuraavasti: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Vaihe 3
Tämän menetelmän helpompaa käyttöä varten on järkevää määritellä makro: #define countof (a) (sizeof (a) / sizeof (a [0])) Huomaa, että koska operaattorin size arvo lasketaan käännettäessä ajankohtana, missä laskenta suoritetaan, tietojen taulukon ja sen elementtien tilavuudesta on oltava nimenomaisesti saatavilla. Toisin sanoen on mahdotonta määrittää tuntemattoman kokoisen taulukon parametreja sen ulkoisella ilmoituksella.
Vaihe 4
Määritä taulukon koko ohjelman suorittamisen aikana käyttämällä sen lopettamisen tunnettua merkkiä. Yksi lähestymistavoista, joka sallii datan tallentamisen ja lähettämisen määrittelemättömän matriisin muodossa, on allokoida erityinen arvo merkinnälle, joka osoittaa datasekvenssin loppuun saattamisen. Esimerkiksi yksitavuisten C-tyylisten merkkijonojen, jotka ovat merkistötaulukoita, on lopetettava arvolla 0, pakatut vaihtelevan pituiset C-merkkijonoryhmät ovat nollapäätteisiä ja osoitinryhmien on oltava nollapäätteisiä.
Vaihe 5
Määritä tällä tavalla esitetyn matriisin koko skannaamalla sitä elementteittäin, kunnes löydät lopetuselementin. Lisää nolla-alustettua laskuria skannauksen aikana. Tai suurenna osoittimen arvo taulukkoelementiksi ja laske skannauksen jälkeen nykyisten ja ensimmäisten elementtien osoittimien välinen ero.
Vaihe 6
Hanki dynaamisen taulukon koko, jota kehys tai kirjasto-objekti edustaa kutsumalla sen menetelmää. Kaikilla luokilla, jotka kapseloivat tällaisten taulukoiden toiminnot, on menetelmiä nykyisen elementtimäärän saamiseksi. Esimerkiksi C ++ -standardikirjaston std:: vektorimalliluokassa on kokomenetelmä, Qt-kehyksen QVector-luokassa on laskentamenetelmä ja MFC: n analogisessa CArray-luokassa on GetCount-menetelmä.