Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486

    C++ e dimensionamento array

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167

    Re: C++ e dimensionamento array

    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!
    Esempio:
    codice:
    float *p;
    
    p = new float[20];  // array di 20 elementi float
    
    if (!p){
    cout << "Allocazione fallita";
    
    return -1;
    
    }
    
    
    
    delete [] p;  // svuoto l'array;
    In questo codice manca ovviamente la parte in cui carichi l'array, ossia assegni ad ogni elemento dell'array un valore.

    ciao.

  3. #3
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    74
    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).

  5. #5
    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.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    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?
    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.

  7. #7
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    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.
    Hai capito bene , ma per indice cosa intendi? Devo creare una struttura dati che comprenda un indice fra i suoi membri, oppure...
    ChReAn
    -------------------

    Slackware 9.1 powered

  8. #8
    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!

  9. #9
    n355un0
    Guest
    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.
    sinceramente, parlando di c++, opterei più volentieri per new e delete.

  10. #10
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    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!
    Scusa ma... Assegnare un nuovo valore a una variabile non ridimensiona l'array.
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.