Hvordan kan vi Dynamisk Tildele Array størrelse?

Arrays i programmering er samlinger eller sekvenser av verdiene i en enkelt variabel navn. Disse datastrukturer lar programmerere å representere dataserier eller datalister for en rekke formål, som for eksempel sortering eller gjentakelse. Men i mange programmeringsspråk som C / C ++, må arrays programmerere erklære statiske, uforanderlige matrise størrelser. Ved å bruke minnetildeling teknikker i et språk som C ++, kan programmereren dynamisk lage arrays eller endre størrelsen på disse matriser under programkjøring.

arrays

I lavere nivå språk som C eller C ++, matriser er statisk. Når erklærte med en størrelse verdi, vil denne matrisen alltid opprettholde den størrelsen. Kompilatoren tildeler en blokk av kontinuerlig minne for matrisen. Eventuelle andre funksjoner eller variabler som må minne vil bli plassert etter tabellen. Følgelig kan matrisen ikke endres i størrelse uten å overskrive de data som følger den. Så, for eksempel, når en programmerer erklærer en matrise med tjue plasser, vil denne matrisen alltid har tjue mellomrom, enten de er brukt eller ikke, for livet av datastrukturen.

Minneallokerings på Heap

For å omgå denne begrensningen, men kan programmerere allokere minne på haugen. Normalt er variabler og arrays deklarert i et program eller en funksjon legges på stakken, som i hovedsak representerer korttidshukommelsen. Når levetiden av funksjonen eksisterer matrisen på ferdig, blir matrisen slettet. Ved å bruke den "nye" søkeord, derimot, kan programmereren samle minne fra Heap, som er langtidshukommelsen som eksisterer utenfor funksjonen som erklærer matrisen. Videre kan programmerer bruke Heap å erklære arrays dynamisk.

dynamiske Arrays

Med matriser, har programmereren å erklære størrelsen på matrisen ved erklæring. Denne størrelsen må være representert ved en konstant verdi, enten en kontinuerlig variabel eller et helt tall. Men ved å bruke den "nye" operatør, kan programmereren bruke vanlige variabler til størrelse matriser, og brukeren kan selv angi verdien av disse variablene under kjøring. Følgende eksempel viser forskjellen:

int main () {

int arr [5]; // Ny matrise, må dimensjoneres med konstant verdi
int size = 5;
int * dynamic_array = new int [size]; // Størrelsen på matrisen er dynamisk

Endre størrelse Arrays

Med disse dynamiske matriser, kan programmereren deretter lage matriser som kan endre størrelsen. Den "vector" klassen representerer en dynamisk voksende eller krymper matrise som taks nytte av dynamiske arrays. Følgende eksempel illustrerer hvordan å lage en enkel matrise som vokser seg større i størrelse:

int main () {

int * arr = new int [5];
int new_size = 10;

arr [0] = 1;
arr [1] = 2;

/ Endre størrelse /
int * arr2 = new int [new_size];

arr2 [0] = arr [0];
arr2 [1] = arr [1];

slette [] arr;
arr = arr2;

returnere 0;
}