[c++] Quesito su allocazione dinamica

Pablo5
ciao ragazzi,mi sapete dire se questa operazione è lecita?????


struct dati
{
int x;
int y;
int z;
}
int numero;
cout<<"Inserisci un numero"< cin>>numero;
new= dati temp[numero];


questo frammento di codice è totalmente sbagliato cmq vi spiego a parole quello che vorrei fare:


Creo un vettore di strutture come riporta la scrittura:
" dati temp[numero]"
solo che per fare qualcosa del genere devo usare l' allocazione dinamica e la definizione che ho nel mio libro sarebbe(dato p un puntatore)
" *p=tipo[dimensione]" //per allocare vettori
pero' devo mettere insieme le due cose
ovvero: allocare un vettore di strutture solo che non riesco a capire come devo scrivere tale definizione

Risposte
gigilatrottola2
ma se lavori in c++, perche nn usi ?

superpunk733
In realta' vector non tutti lo fanno... anche a noi all'uni abbiamo saltato i vettori e fatto direttamente gli array. Infatti me li ero iniziati a leggere sul libro ma poi non c'erano nelle dispense del prof. Abbiamo fatto solo gli array. Anche se, leggendoli, i vettori mi sembrano piuttosto pratici, perche' puoi sempre aumentare la dimensione, invece gli array sono statici.

Se poi consideri che a pablo1986 fanno usare ancora l'header capisci perche' non usa vector... :-D

Pablo5
evidentemente c'è qualcosa che mi sfugge ma evio di chiedervi il significato di .
Cmq in teoria avrei risolto il mio problema,grazie delle vostre attenzioni^_^

gigilatrottola2
vector è un contenitore (array dinamico) messoti a disposizione dalla STL (la libreria standard)

A meno che nn ti sia espressamente vietato o detto di farlo a mano, è generalmente una buona idea sfruttare quello ke il linguaggio di mette a disposizione è la libreria standard, quindi ti garantisce portabilità)

E' un po come reinvntare la ruota. Se hai gia a disposizione lo strumento che ti gestisce un array e la rilocazione di memoria... perke farlo ? ;)

Vincent2
Esagerato usare vector per una cosa cosi piccola
truct dati
{
int x;
int y;
int z;
}

int numero;
cout<<"Inserisci un numero"<<endl;
cin>>numero;
dati *PtrDati = new dati[numero];
cout <<"Inserisci il nuovo numero" <<endl;
cin >>numero;
delete[] PtrDati;
PtrDati = new dati[numero]


Abbiamo ridimensionato l'array!

Vincent2
Alla fine la classe vector non è altro che una classe che fa le stesse cose del codice che ho postato sopra, ma utilizza i template per garantire una completa aderenza a tutti i tipi di dato.
E poi un array non è altro che un indirizzo di memoria al suo primo elemento, quindi alla fine è un puntatore.
int array[10];

quindi deduciamo che &array = array[0]

Pablo5
grazie mille vincent^_^

Vincent2
Sbaglio o sei anche sul forum html? Li sono wolverine

Pablo5
si si ogni tanto posto anche li.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.