Opprette vanlig 2D -matrise
Følgende uttalelse oppretter en vanlig 2D -matrise:
String arr2d [] [5] = "aa", "ab", "ac", "ad", "ae",Hvis denne matrisen opprettes i det globale omfanget, kan den ikke brukes (e.g. tildelte en elementverdi) i det globale omfanget. Imidlertid kan det få noen av elementene tildelt en verdi i de andre omfangene.
For å ha slettet denne matrisen, bare la den gå ut av omfang. Hvis det ble opprettet i et annet omfang enn det globale omfanget, ville det gå ut av omfang på slutten av blokken (). Hvis det ble opprettet i det globale omfanget, ville det bare gå ut av omfanget på slutten av programmet.
Gratis butikk 2D -matrise
Følgende uttalelse viser hvordan ovennevnte matrise, men med et annet pekernavn kan opprettes dynamisk i gratis butikk:
String (*ptr2d) [5] = ny streng [5] [5] "Aa", "ab", "ac", "ad", "ae",Merk hvordan 2D -matrisen er opprettet med den nye operatøren. Navnet på matrisen er PTR2D.
Hvis denne matrisen opprettes i det globale omfanget, kan den ikke brukes (e.g. tildelte en elementverdi) i det globale omfanget. Imidlertid kan det ha noen av sine elementer, tildelt en verdi i de andre omfangene.
For å slette denne matrisen, bruk Delete [] -operatøren, som vist nedenfor. Arrayen i gratis butikk kan ikke virkelig slettes ved å la den gå ut av omfang. Det må slettes med Delete [] -operatøren, i omfanget, for å frigjøre minne.
Artikkelinnhold
- INNLEDNING - Se ovenfor
- Slette en 2D -vanlig matrise
- Slette dynamisk opprettet 2D -pekerutvalg av gratis butikk
- Konklusjon
Slette en 2D -vanlig matrise
En todimensjonal ordinær matrise blir slettet ved bare å la den gå ut av omfang. Følgende program illustrerer dette med et nestet omfang:
#inkludereUtgangen er, BB. If-konstruksjonen har en blokk som er det nestede omfanget. Arrayen stopper eksisterende på slutten av blokken. Det er en kommentarindikator, rett under blokken, i programmet. Hvis det fjernes, vil ikke programmet sammenstille, og en feilmelding vil bli utstedt. Dette er resultatet av at 2D -matrisen er død på slutten av blokken.
I det følgende programmet dør den ordinære 2D -arrayen som er erklært i funksjonsbodet, på slutten av funksjonsblokken:
#inkludereUtgangen er fortsatt, BB. Det er en kommentarindikator rett under funksjonsblokken i programmet. Hvis det fjernes, vil ikke programmet sammenstille, og en feilmelding vil bli utstedt. Dette er resultatet av at 2D -matrisen er død på slutten av blokken. Husk også at tildeling av en verdi til et 2D -element, etter erklæring, ikke er tillatt i det globale omfanget.
Slette dynamisk opprettet 2D -pekerutvalg av gratis butikk
Oppdrag etter erklæring er ikke tillatt i det globale omfanget. Så det er praktisk å ha en 2D -array -erklæring, i et nestet omfang, i C ++ hovedfunksjon, av pedagogiske grunner.
En todimensjonal matrise, erklært i skjemaet ovenfor, blir slettet med syntaks, "Slett [] 2Darray". Denne slettingen må finne sted i sitt rom for å frigjøre hukommelse og for å unngå hukommelseslekkasje. Følgende program illustrerer dette, med et nestet omfang:
#inkludereUtgangen er, AA, fra PTR2D [0] [0]. Etter sletting returnerer ptr2d [0] [0] ingenting. Selv om de andre elementene som PTR2D [1] [1] fortsatt vil returnere en verdi, anses matrisen som er slettet.
2D gratis butikk matrise som peker-til-peker
En 2D-matrise kan opprettes som en peker-til-peker. I dette tilfellet må alle radene slettes først før den endimensjonale matrisen gjenstår, blir slettet. Følgende program illustrerer dette i C ++ hovedfunksjonen:
#inkludereUtgangen er BB før du sletter. Etter slettet er returverdien fra Ptr2d [1] [1] ingenting.
Nå er denne pekeren 2D -matrisen i gratis butikk en peker en dimensjonal matrise, av pekermatriser. Så for å slette 2D-matrisen i gratis butikk, må alle radene slettes først med sletting [] før den viktigste endimensjonale pekerarrayen blir slettet. Dette bruker Delete [] operatørskjema for en 2D -matrise i gratis butikk.
Inkludering av bibliotek
Den nye og slette operatøren er faktisk definert på biblioteket. Imidlertid er dette biblioteket valgfritt.
Konklusjon
For å slette en 2D vanlig matrise, bare la den gå ut av omfang. Hvis 2D -matrisen er i gratis butikk, må den slettes med Delete [] -operatøren for å fritt minne i omfanget som den er erklært. Hvis 2D -matrisen i gratis butikk ble opprettet med en konvensjonell syntaks, ville et enkelt "slett [] 2DarrayName" gjøre for sletting. Hvis den ble opprettet som en peker-til-peker, må radene bli slettet først med “Delete [] 2DarrayName [i]” og deretter den gjenværende 1D-matrisen (uten elementer), bli slettet med “Delete [] 2DarrayName ”.