|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: May 2004
Messaggi: 2343
|
[C++] namespace, vettori e matrici
Ciao a tutti,
ho appena cominciato a convertire un programma da FORTRAN a C++ (serve a fare i conti, sono un ingegnere chimico ![]() il vettore viene dimensionato nel main, ma tale dimensione varia ad ogni loop. La dichiarazione del vettore nel namespace però avviene senza dimensionamento, e sembra che dentro al main io non possa cambiare la dimensione. Scritto in codice: *PREMESSA: uso delle librerie di calcolo numerico create da un mio professore. Nel seguente codice BzzVector è semplicemente una classe creata per gestire vettori. Scrivere BzzVector f0(int i) equivale a scrivere double f0[i], niente di che* Codice:
namespace tsteep{ BzzVector f0; }void main(void){ using namespace tsteep; for(i = 3; i <= 16; i++){ BzzVector f0(i); }} Codice:
namespace tsteep{ BzzVector f0; }void main(void){ using namespace tsteep; for(i = 3; i <= 16; i++){ BzzVector aus(i); f0 = aus; }} Il problema è che vorrei capire se si può andare a manipolare direttamente f0 senza dover dimensionare un vettore extra, per risparmiare memoria (che in questo caso è niente, ma nel programma principale che si trova a maneggiare più vettori di 5000 elementi penso inizi a pesare...). Grazie! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Senza sapere cosa sia BuzzVector è impossibile risponderti.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Secondo me stai sbagliando nel senso che nel primo main ridichiari una variabile f0 di tipo BzzVector ad ogni iterazione, se ti capita di riutilizzarla fuori dal for la variabile f0 di tsteep è vuota, mentre nel secondo caso correttamente modifichi la f0 globale in quanto l'assegni ad ogni for.
Il fatto che tu ottenga out_of_range mi fa pensare ad una implementazione tramite vector o altri container standard, in tal caso potresti usare qualche metodo tipo resize, ma senza conoscere la definizione di BzzVector è impossibile consigliarti strade alternative. |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: May 2004
Messaggi: 2343
|
Hmm grazie delle risposte, chiederò direttamente al professore se può implementare un'opzione tipo resize visto che ora manca!
![]() |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: May 2004
Messaggi: 2343
|
E invece no! Ho trovato un tutorial che m'era sfuggito...
ChangeDimensions(nuova dimensione,&f0) funziona! Yeah ![]() Grazie ancora! ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io mi domando perché i professori si facciano spesso le loro inutili e stupide librerie invece di insegnare la libreria standard.
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]() ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
a Roma Tre c'é un professore che spiega Java (non faccio nomi altrimenti il pupazzo rosso di Striscia si offende ![]() ![]() ![]() ed é ancor peggio vedere quei poveracci ignoranti* di studenti che imparano a programmare cosi!! *ignoranti non in senso dispregiativo ma nel senso che mi pare giusto che uno che arriva li dapprima non sia tenuto a saperne una mazza di quella roba. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:41.