lingue di livello inferiore , come C o C + + , gli array sono statici . Una volta dichiarato con un valore di dimensione , che schiera sempre mantenere quella dimensione . Il compilatore alloca un blocco di memoria continua per la matrice . Tutte le altre funzioni o variabili che necessitano di memoria saranno collocati dopo l'array . Conseguentemente , l'array non può cambiare in dimensioni senza sovrascrivere i dati che lo segue. Così, per esempio , una volta che un programmatore dichiara una matrice con una ventina di posti , tale array avrà sempre una ventina di spazi , siano essi utilizzati o meno , per la vita della struttura dati .
Allocazione memoria su il mucchio
Per aggirare questa limitazione , tuttavia , i programmatori in grado di allocare memoria sul mucchio. Normalmente , le variabili e gli array dichiarato in un programma o una funzione sono posti sullo stack , che rappresenta essenzialmente la memoria a breve termine . Una volta che la durata della funzione della matrice esiste sul finiture , l'array viene eliminato . Utilizzando la "nuova " parola chiave, tuttavia, il programmatore può raccogliere memoria dal Mucchio, che è la memoria a lungo termine che esiste fuori della funzione che dichiara l'array . Inoltre , il programmatore può utilizzare il Mucchio di dichiarare array dinamico .
Dinamico Array
Con gli array , il programmatore deve dichiarare la dimensione della matrice a dichiarazione. Questa dimensione deve essere rappresentato da un valore costante , una variabile o costante un numero intero . Tuttavia, utilizzando l'operatore "new " , il programmatore può utilizzare le variabili regolari per matrici dimensioni , e l'utente può anche inserire il valore di queste variabili durante la fase di esecuzione. L'esempio seguente mostra la differenza :
int main ( ) {
int arr [ 5] ; //nuovo array , devono essere dimensionati dimensione valueint costante = 5; int * dynamic_array = new int [ size] ; //dimensione della matrice è dinamica
Ridimensionamento Array
Con questi array dinamici , il programmatore può quindi creare matrici che possono essere ridimensionate . La classe "vector" rappresenta un array di espansione dinamica o in calo che taks vantaggio di array dinamici . L'esempio seguente illustra come creare un semplice array che cresce di dimensioni maggiori :
int main ( ) {
int * arr = new int [5 ] ; int new_size = 10;
arr [ 0 ] = 1; arr [ 1 ] = 2;
/* Ridimensiona * /int * arr2 = new int [ new_size ] ;
arr2 [ 0 ] = arr [ 0 ] ; arr2 [ 1 ] = arr [ 1 ] ;
delete [ ] arr , arr = arr2 ;
return 0; }
Programmazione © www.354353.com