Dovrei ridimensionare dinamicamente un array in c++.
Lo dichiaro come un puntatore, ma poi al momento di aggiungere un nuovo membro come faccio?
Ciapz!
Dovrei ridimensionare dinamicamente un array in c++.
Lo dichiaro come un puntatore, ma poi al momento di aggiungere un nuovo membro come faccio?
Ciapz!
ChReAn
-------------------
Slackware 9.1 powered
Esempio:Originariamente inviato da ChReAn
Dovrei ridimensionare dinamicamente un array in c++.
Lo dichiaro come un puntatore, ma poi al momento di aggiungere un nuovo membro come faccio?
Ciapz!
In questo codice manca ovviamente la parte in cui carichi l'array, ossia assegni ad ogni elemento dell'array un valore.codice:float *p; p = new float[20]; // array di 20 elementi float if (!p){ cout << "Allocazione fallita"; return -1; } delete [] p; // svuoto l'array;
ciao.
Scusa, forse non mi sono spiegato bene.
Non parlavo di allocazione dinamica ma di ridimensionamento dinamico di un array.
Per intenderci, se ho un array di quattro elementi e voglio inserirne un quarto, come posso fare a ridimensionarlo senza ricorrere a strutture dati complesse come liste concatenate?
ChReAn
-------------------
Slackware 9.1 powered
Devi riversare il tuo array in un altro array di dimensione maggiore, creato in un secondo momento.
Di solito questa operazione non e' molto ottimale,specialmente quando l'array incomincia ad abbondare di elementi.
A quel punto ,si deve per forza di cose utilizzare una lista dinamica (per esempio i vettori).
Se ho capito bene, la tua esigenza è quella di variare la grandezza dell'array in qualsiasi momento e non di allocare memoria dinamicamente.Se così è, ti conviene usare un indice che puoi inizializzare in qualsiasi momento. Bye.
Usa la malloc per allocare la memoria iniziale (e la free quando lo svuoti) e ogni volta che lo ridimensioni dinamicamente usa la realloc.Originariamente inviato da ChReAn
Scusa, forse non mi sono spiegato bene.
Non parlavo di allocazione dinamica ma di ridimensionamento dinamico di un array.
Per intenderci, se ho un array di quattro elementi e voglio inserirne un quarto, come posso fare a ridimensionarlo senza ricorrere a strutture dati complesse come liste concatenate?
ciao.
Hai capito bene , ma per indice cosa intendi? Devo creare una struttura dati che comprenda un indice fra i suoi membri, oppure...Originariamente inviato da parente
Se ho capito bene, la tua esigenza è quella di variare la grandezza dell'array in qualsiasi momento e non di allocare memoria dinamicamente.Se così è, ti conviene usare un indice che puoi inizializzare in qualsiasi momento. Bye.
ChReAn
-------------------
Slackware 9.1 powered
Dichiara un indice(una lettera) ad esempio "i" come un intero
o un reale, a seconda delle tue esigenze, poi quando dichiari l'array
metti l'indice i tra le parentesi[];
Es.:
int i=100;
int mioarray[i];
i sarà la grandezza del tuo array.In questo modo potrai variare la grandezza dell'array in qualsiasi momento del programma,
inizializzando i a tuo piacimento(ES.:i=2500.
See you next time!
sinceramente, parlando di c++, opterei più volentieri per new e delete.Originariamente inviato da Level
Usa la malloc per allocare la memoria iniziale (e la free quando lo svuoti) e ogni volta che lo ridimensioni dinamicamente usa la realloc.
ciao.
Scusa ma... Assegnare un nuovo valore a una variabile non ridimensiona l'array.Originariamente inviato da parente
Dichiara un indice(una lettera) ad esempio "i" come un intero
o un reale, a seconda delle tue esigenze, poi quando dichiari l'array
metti l'indice i tra le parentesi[];
Es.:
int i=100;
int mioarray[i];
i sarà la grandezza del tuo array.In questo modo potrai variare la grandezza dell'array in qualsiasi momento del programma,
inizializzando i a tuo piacimento(ES.:i=2500.
See you next time!
Io devo ridimensionare l'array piu' volte, e quindi non mi basta una sola inizializzazione.
Credo che la soluzione piu' rapida (anche se non mi piace troppo) sia quella della copia fra array, per non ricorrere alle liste.
ChReAn
-------------------
Slackware 9.1 powered