Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Realizzare matrice con classe Vector
Forum - C/C++ - Realizzare matrice con classe Vector

Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 17:31
Sabato, 06/10/2012
Mi hanno consigliato di usare, per realizzare delle matrice dinamiche l'uso della classe vector secondo un prototipo del genere:
Codice sorgente - presumibilmente C++

  1. #include <vector>
  2. using namespace std;
  3.  
  4. typedef vector<double> Vettore;
  5. typedef vector<Vettore> Matrice;
  6.  
  7. // ora ho un nuovo tipo "Matrice" che è vettore di "Vettore"
  8.  
  9. int main() {
  10.      Matrice La_mia_matrice;
  11.      La_mia_matrice.qui_uso_i_metodi_di_vector_e_non_mi_preoccupo_piu;
  12. }



Il problema è che non capisco come inizializzare e poi usare la matrice.
Quello che vorrei è:
- inizializzare la matrice con qualcosa del tipo
Matrice A(righe 3, colonne 4)
e poi il poter aver accesso veloce tramite i classici indici "i" e "j".
Potete aiutarmi e/o consigliarmi?

Ultima modifica effettuata da Jenosky il 06/10/2012 alle 18:17
PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 17:53
Sabato, 06/10/2012
Inserisci il codice fra [ code ] [ / code ]

Allora per inizializzare devi allocare prima tanti vector quanti le righe e per ognuno allocare la memoria per le celle.
Ad esempio:
Codice sorgente - presumibilmente C/C++

  1. void alloca(int nrighe, int ncolonne) {
  2.         Matrice.resize[nrighe];
  3.         for (int i=0; i<nrighe; i++) {
  4.                 Matrice[i].resize(ncolonne);
  5.         }
  6. };



Ora per accedere alla posizione (r, c) basta che usi Matrice[ r ][ c ] . Ovviamente le righe sono numerate da 0 a nrighe-1 e così anche le colonne.


φ² = φ + 1
PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 13:59
Lunedì, 08/10/2012
Quindi, volendo usare la funzione che hai definito, la potrei usare come costruttore di una ipotetica classe "matrice" che ha appunto in ingresso righe e colonne.
In questa classe (nella quale metterei diverse operazioni tra matrici) dovrei implementare anche un distruttore? O provvede la classe vector?
Se si invece, che tipo di distruttore dovrebbe essere? :)
Ragazzi io vi ringrazio davvero tanto e mi infastidisco quasi a chiedervi ogni cosa, purtroppo la mia tesi su questo è :(

PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 17:11
Lunedì, 08/10/2012
Beh, non sono sicuro che sia necessario però io per sicurezza lo implementerei.
Farei così: uso un ciclo for per settare la dimensione di ogni riga a 0:
Codice sorgente - presumibilmente Plain Text

  1. Matrice[i].resize(0);


e poi imposterei a zero anche la dimensione di "Matrice".


φ² = φ + 1
PM Quote