|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
[C++]array dinamici
ciao a tutti, ho un problema con la definizione di array allocati dinamicamente.
In pratica ho una classe che ha nei campi privati un array di puntatori ad oggetti ed un intero che dovrebbe essere la dimensione di tale array. in alcune funzioni ho bisogno di aggiungere oggetti all'array ma se provo a farlo senza riallocare l'array mi da un errore di segmentazione. Non posso fare neanche una cosa del genere: es class x {.......} class y {...... private: x* array; int dim; }; funz() {.... x=new y[dim]; } dato che la classe y non ha un costruttore di default come posso riallocare nuova memoria per l'array |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Ma usare vector no?
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
con i vector l'ho gia fatto, volevo provarlo a fare con gli array dinamici
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Allora devi implementarti una lista, con le operazioni di ricerca, inserimento e cancellazione. E' il modo corretto di creare un insieme di elementi ridimensionabile a piacere (che è quello che vuoi te)
|
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
gli array sono molto diversi dalle liste: se vuole ammortizzare il tempo di ridimensionamento di un array può usare algoritmi particolari (es: raddoppiare la dimensione fisica ad ogni "sforamento" anziché incrementarla solo di 1). tuttavia la domanda non era a carattere algoritmico: non si è capito cosa stia chiedendo supernovae, anche perché il codice che ha riportato è sbagliato (assegna un puntatore y* al nome di un tipo, "x", non ha senso). |
|
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Poi chi ha detto che l'accesso ad una lista debba essere lineare? Puoi sempre usare strutture d'appoggio e ridurre il costo di accesso. In più hai la possibilità di rimuovere o inserire in mezzo all'insieme cosa che con l'array (e vector) non fai con la stessa efficienza. Quote:
Avendo scartato vector pensavo cercasse di implementare una alternativa. |
||
|
|
|
|
|
#7 | |||||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
![]() Quote:
ora non mi venire a blaterare di dizionari, hash tables, alberi di ricerca, alberi RB... queste cose le sappiamo tutti, ma a supernovae non gliene frega un cavolo: lui ha un problema molto banale col C++ che gli altri stentano a capire, ma non è un problema algoritmico probabilmente non deve neanche realizzare un programma efficiente, sta solo facendo qualche esperimento didattico. Quote:
Quote:
|
|||||
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
con quello che ho scritto volevo indicare una classe che ha come campo privato un array di puntatori ad oggetti del tipo x con dimensione variabile.
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
|
|
|
|
|
|
#11 | ||
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
Quote:
Quote:
|
||
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
hai tre scelte:
1) usare vector 2) gestire lo stesso array in oggetti diversi e stare attento alla deallocazione 3) ricopiare tutto l'array, ma il problema è un altro: alla classe Point3D manca il costruttore no-arg, di quegli array non puoi allocarne neanche uno. |
|
|
|
|
|
#13 | |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 24
|
Quote:
|
|
|
|
|
|
|
#14 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Dev-C++ è una cosa totalmente priva di senso: vecchio, buggato, privo di features, non più sviluppato, non più supportato, e perdipiù usa un compilatore che non è quello "ufficiale" per programmare su Windows (smettiamola con la mania dell'open-source: il MinGW ha un Platform SDK ridotto, a meno che non si debba scrivere un programma portabile è perfettamente inutile). usa Visual C++ 2008 Express, o se proprio devi Code::Blocks. |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Che abbia un platform SDK ridotto non importa, già è tanto che ce l'abbia; Dev-C++ è sempre stato l'IDE scelto da chi era agli inizi per smanettare un po' con la compilazione di semplici programmi. In questo direi che MinGW è più che ottimo, gli va anche di lusso. Che poi Dev-C++ al giorno d'oggi bisogni evitarlo, be', sono d'accordo anche io. Lo sto dicendo da parecchio, se proprio volete Dev-C++, passate almeno a wxDev-C++ che è un po' meno morto come progetto. Code::Blocks è la scelta migliore IMHO. Ah, ultima frecciatina ( ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#16 | ||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
|
||
|
|
|
|
|
#17 | ||
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Quote:
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:39.













queste cose le sappiamo tutti, ma a supernovae non gliene frega un cavolo: lui ha un problema molto banale col C++ che gli altri stentano a capire, ma non è un problema algoritmico








