trisdiastatoi pinakes

Ξεκίνησε από nicos, 04 Μαΐου 2010, 10:55:14 ΜΜ

« προηγούμενο - επόμενο »

nicos

 :)re paidia gnorizei kanenas pos 8a diloso pinaka 3*4*5 60 stoixeion stin glossa c++ ;

Αλεξόπουλος Ανδρέας

αν ο πίνακας ήταν με ακέραιους κάπως έτσι
int a [3][4][5];

στην C τουλάχιστον έτσι είναι, άρα αν δε κάνω λάθος και στην C++ με τον ίδιο τρόπο γίνεται η δήλωση

evry

Νομίζω ότι αν δηλώσεις τον πίνακα έτσι στατικά όταν τον περάσεις μέσα σε μια συνάρτηση σαν παράμετρο θα πρέπει να το γράψεις
int a[][4][5]  αν τα θυμάμαι καλά, ενώ με δείκτες νομίζω είναι καλύτερα int ***a;
Εδώ όμως πρέπει να δηλώσεις τον πίνακα δυναμικά, δηλαδή το σκεπτικό είναι ότι ο πίνακας είναι ουσιαστικά ένας δείκτης που δείχνει σε έναν πίνακα από δείκτες κάθε ένας από τους οποίους δείχνει σε έναν πίνακα από ακεραίους.  :-\

int ***array;

  array = new int**[3];
  for (int j = 0; j < 3; ++j) {
    array[j] = new int*[4];

    for (int k = 0; k < 4; ++k)
      array[j][k] = new int[5];
  }

φυσικά μπορείς να παίξεις και με vectors και να έχεις κάτι τέτοιο

vector<vector<vector<int>>> array;

δηλαδή vector of vectors of vectors of int

όπως και να έχει αν το πας δυναμικά μην ξεχάσεις τα delete ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Αλεξόπουλος Ανδρέας

απλά το να χειριστείς τρισδιάστατους πίνακες με pointers θέλει αρκετή εμπειρία στο προγραμματισμό για να μην μπλεχτείς!! όσο γι'αυτό που λες για το πώς τους περνάς σαν παράμετρο σε συνάρτηση (το οποίο δε μας λέει ο φίλος αν θέλει να το κάνει ή οχι) δε το θυμάμαι ακριβώς.