|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
C++ Usare l'operatore subscript in un STL vector multidime
Come potrei usare qualcosa del genere
nella funzione PrintParete? Parete[i][j] Perchè ho necessità di scrivere codice nelle iterazioni a seconda che i e j siano pari o dispari in diverse combinazioni. Ho fatto diversi tentativi ma non vanno. Vi allego l'esempio che itera usando gli "Iteratori" //-------------------------------------------------- typedef vector<CPannello> vStriscia; typedef vector<vStriscia> vParete; //------------------------------------------------- //funzione di test //Stampa l'altezza di ogni pannello striscia per striscia //chiamando il metodo ::GetH per ogni pannello void PrintParete(vParete &Parete); void PrintParete(vParete &Parete) { vParete::iterator i; vStriscia::iterator j; cout.setf(ios_base::left); for(i=Parete.begin();i<Parete.end();i++) { cout.width(10); cout<<"Striscia "; for(j=(*i).begin();j<(*i).end();j++) { cout.width(10); cout<< (*j).GetH()<<" "; } cout<<endl; } } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2001
Messaggi: 428
|
L'espressione:
variabile[i][j] la puoi fare (credo) se variabile e' di un tipo T per il quale e' definito l'operatore [] tale che ritorna un tipo K che a sua volta possiede l'operatore []. In pratica le due indicizzazioni sono 2 operatori applicati uno sul risultato dell'altro. Provalo. Ciao.
__________________
PC: Phenom 2 955, 4 GB RAM DDR3, 2 x ATI HD 7870 Ghz edition |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Trattandosi di un vector di vector in teoria non dovrebbe dar problemi. Che errore ti da ?
P.S: Usate i tag [ code ] e [/ code ] per i sorgenti vi prego ! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Appunto...
A me una cosa del genre funziona : Codice:
typedef vector<int> vInt;
void main()
{
vector<vInt> v;
v.resize(10);
for(vector<vInt>::iterator i=v.begin(); i<v.end(); ++i)
{
(*i).resize(10);
for(vInt::iterator j=(*i).begin(); j<(*i).end(); ++j)
*j = 5;
}
for(i=v.begin(); i<v.end(); ++i)
for(vInt::iterator j=(*i).begin(); j<(*i).end(); ++j)
cout << *j;
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Avete ragione non capisco perchè non riuscivo a compilare la versione con le quadre
Ieri ci ho messo 2 minuti a riscriverla... Mi scuso con tutti per la non indentazione In realtà come dice Cionci la versione con gli iteratori funzionava, sono stato io a non averlo esplicitamente detto...(scusami Cionci Ecco come funziona la versione con le quadre. Codice:
void Print_H_Parete(vParete &Parete)
{
cout.setf(ios_base::left);
for(unsigned int i=0;i<Parete.size();i++)
{
cout.width(10);
cout.width(10);
cout<<"Striscia:H(i) ";
for(unsigned int j=0;j<Parete[i].size();j++)
{
cout.width(10);
cout<< Parete[i][j].GetH()<<" ";
}
cout<<endl;
}
}
quindi basta scrivere [i][j].metodo_della_classe Grazie a tutti per l'interessamento...sono un po stressato per sta tesi... |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che riguarda la tesi ?!?!?!
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Un software per la verifica sismica degli edifici in muratura.
Non sono un informatico studio ingegneria civile . Ciao Cionci e ... ancora grazie Spero mi aiuterete ancora in seguito . |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
|
ma usate i functor per ste cose che son tanto carini da vedere
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Sei un po generico :
Fammi un esempio. Ma ti prego,se riguarda l'outputing lasciamo stare. Perchè questi sono i classici dirty-codes per vedere giusto se funzionano. Se ti riferisci a qualche fobject che mi gestisce le combinazioni di indici pari e dispari nelle iterazioni sei il benvenuto |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:12.



















