|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2005
Città: MB
Messaggi: 126
|
[C++] Forward iterator in array bidimensionali
Ciao a tutti,
sto facendo altre prove con c++ e ho implementato una classe per rappresentare una matrice. in questa classe ho messo due strutture dati che si comportano come una lista di liste: Codice:
struct colonna{
int indicecolonna;
colonna *next;
};
struct riga{
int indiceriga;
colonna *colonne;
riga* next;
};
Potreste darmi una mano? PS Non posso cambiare implementazione, voglio solo sapere se così è possibile realizzare o no un fwd iterator. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Per caso, la sparo lì, devi implementare una classe che si chiama SparseMatrix?
lol.... Se googli sparse matrices trovi tonnellate di materiale. PS Dai una occhiata al sparse matrices compressed row storage.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 Ultima modifica di __ZERO_UNO__ : 04-02-2012 alle 01:02. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2005
Città: MB
Messaggi: 126
|
Ciao, grazie per il link, ma volevo sapere se era possibile realizzare un iteratore con l'implementazione che già ho a disposizione.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Il problema di base e' che l'implementazione che hai scelto e' poco pratica (liste di liste ? meglio un array di array o un unico array) e sbagliata (dove salvi il valore della cella A(i,j)?)
In ogni caso l'iteratore lo puoi fare, sara' una struttura che contiene un riferimento tanto alla riga corrente quanto alla colonna corrente. Quando lo fai avanzare procedi lungo la colonna corrente, quando arrivi alla fine avanzi di uno sulla riga corrente e riparti
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2005
Città: MB
Messaggi: 126
|
Ciao marco, grazie per la risposta.
Oggi pomeriggio sono riuscito a fare l'iteratore della lista di liste. Il problema però è dato dal fatto che non posso definire l'operatore ==, perchè per come l'ho implementato io l'iteratore genera "al volo" una struct contenente coordinate e valore. Ogni volta che io chiamo begin, end o ++, non viene riutilizzata la stessa struct, ma se ne crea una nuova, anche per lo stesso elemento. E' corretto oltre a confrontare l'indirizzo confrontare anche i contenuti per vedere se le strutture si riferiscono effettivamente allo stesso identico elemento? (Le strutture contengono i dati dell'elemento, non l'elemento stesso com'è memorizzato nella matrice) La consegna dell'esercizio dice che l'iteratore deve ritornare delle struct che contengono coordinate e dato memorizzato, ma non dice che devono essere usate anche per realizzare la classe matrice in sè. Ultima modifica di alessandrom : 04-02-2012 alle 17:25. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:52.


















