Πολυδιάστατες συστοιχίες C ++ (2η και τρισδιάστατη σειρά)

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

Στο C ++, μπορούμε να δημιουργήσουμε έναν πίνακα ενός πίνακα, γνωστό ως πολυδιάστατο πίνακα. Για παράδειγμα:

 int x(3)(4);

Εδώ, το x είναι ένας δισδιάστατος πίνακας. Μπορεί να χωρέσει έως και 12 στοιχεία.

Μπορούμε να σκεφτούμε αυτόν τον πίνακα ως πίνακα με 3 σειρές και κάθε σειρά έχει 4 στήλες όπως φαίνεται παρακάτω.

Στοιχεία σε δισδιάστατο πίνακα στον προγραμματισμό C ++

Οι τρισδιάστατες συστοιχίες λειτουργούν επίσης με παρόμοιο τρόπο. Για παράδειγμα:

 float x(2)(4)(3);

Αυτός ο πίνακας x μπορεί να χωρέσει έως 24 στοιχεία.

Μπορούμε να μάθουμε τον συνολικό αριθμό στοιχείων στον πίνακα απλώς πολλαπλασιάζοντας τις διαστάσεις του:

 2 x 4 x 3 = 24

Αρχικοποίηση πολυδιάστατης σειράς

Όπως ένας κανονικός πίνακας, μπορούμε να προετοιμάσουμε έναν πολυδιάστατο πίνακα με περισσότερους από έναν τρόπους.

1. Αρχικοποίηση δισδιάστατου πίνακα

 int test(2)(3) = (2, 4, 5, 9, 0, 19);

Η παραπάνω μέθοδος δεν προτιμάται. Ένας καλύτερος τρόπος για να αρχικοποιήσετε αυτόν τον πίνακα με τα ίδια στοιχεία πίνακα δίνεται παρακάτω:

 int test(2)(3) = ( (2, 4, 5), (9, 0, 19));

Αυτός ο πίνακας έχει 2 σειρές και 3 στήλες, γι 'αυτό έχουμε δύο σειρές στοιχείων με 3 στοιχεία το καθένα.

Αρχικοποίηση ενός δισδιάστατου πίνακα στο C ++

2. Αρχικοποίηση τρισδιάστατου πίνακα

 int test(2)(3)(4) = (3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9);

Αυτός δεν είναι ένας καλός τρόπος αρχικοποίησης ενός τρισδιάστατου πίνακα. Ένας καλύτερος τρόπος για να αρχικοποιήσετε αυτόν τον πίνακα είναι:

 int test(2)(3)(4) = ( ( (3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2) ), ( (13, 4, 56, 3), (5, 9, 3, 5), (5, 1, 4, 9) ) );

Παρατηρήστε τις διαστάσεις αυτού του τρισδιάστατου πίνακα.

Η πρώτη διάσταση έχει την τιμή 2. Έτσι, τα δύο στοιχεία που περιλαμβάνουν την πρώτη διάσταση είναι:

 Στοιχείο 1 = ((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)) Στοιχείο 2 = ((13, 4, 56, 3), ( 5, 9, 3, 5), (5, 1, 4, 9)) 

Η δεύτερη διάσταση έχει την τιμή 3. Σημειώστε ότι κάθε ένα από τα στοιχεία της πρώτης διάστασης έχει τρία στοιχεία το καθένα:

 (3, 4, 2, 3), (0, -3, 9, 11) και (23, 12, 23, 2) για το στοιχείο 1. (13, 4, 56, 3), (5, 9, 3 , 5) και (5, 1, 4, 9) για το στοιχείο 2.

Τέλος, υπάρχουν τέσσερις intαριθμοί μέσα σε κάθε ένα από τα στοιχεία της δεύτερης διάστασης:

 (3, 4, 2, 3) (0, -3, 9, 11)…… 

Παράδειγμα 1: Διάστατη συστοιχία

 // C++ Program to display all elements // of an initialised two dimensional array #include using namespace std; int main() ( int test(3)(2) = ((2, -5), (4, 0), (9, 1)); // use of nested for loop // access rows of the array for (int i = 0; i < 3; ++i) ( // access columns of the array for (int j = 0; j < 2; ++j) ( cout << "test(" << i << ")(" << j << ") = " << test(i)(j) << endl; ) ) return 0; )

Παραγωγή

 δοκιμή (0) (0) = 2 δοκιμή (0) (1) = -5 δοκιμή (1) (0) = 4 δοκιμή (1) (1) = 0 δοκιμή (2) (0) = 9 δοκιμή (2) (1) = 1

Στο παραπάνω παράδειγμα, έχουμε ξεκινήσει μια δισδιάστατη intσυστοιχία που ονομάζεται δοκιμή που έχει 3 "σειρές" και 2 "στήλες".

Εδώ, χρησιμοποιήσαμε τον ένθετο forβρόχο για να εμφανίσουμε τα στοιχεία του πίνακα.

  • τον εξωτερικό βρόχο από i == 0για i == 2πρόσβαση στις σειρές του πίνακα
  • τον εσωτερικό βρόχο από j == 0για j == 1πρόσβαση στις στήλες του πίνακα

Τέλος, εκτυπώνουμε τα στοιχεία πίνακα σε κάθε επανάληψη.

Παράδειγμα 2: Λήψη εισόδου για δισδιάστατη συστοιχία

 #include using namespace std; int main() ( int numbers(2)(3); cout << "Enter 6 numbers: " << endl; // Storing user input in the array for (int i = 0; i < 2; ++i) ( for (int j = 0; j > numbers(i)(j); ) ) cout << "The numbers are: " << endl; // Printing array elements for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( cout << "numbers(" << i << ")(" << j << "): " << numbers(i)(j) << endl; ) ) return 0; )

Παραγωγή

 Εισαγάγετε 6 αριθμούς: 1 2 3 4 5 6 Οι αριθμοί είναι: αριθμοί (0) (0): 1 αριθμοί (0) (1): 2 αριθμοί (0) (2): 3 αριθμοί (1) (0): 4 αριθμοί (1) (1): 5 αριθμοί (1) (2): 6

Εδώ, χρησιμοποιήσαμε έναν ένθετο forβρόχο για να λάβουμε την είσοδο του 2d πίνακα. Μόλις ληφθεί όλη η είσοδος, χρησιμοποιήσαμε έναν άλλο ένθετο forβρόχο για να εκτυπώσουμε τα μέλη του πίνακα.

Παράδειγμα 3: Τρισδιάστατη συστοιχία

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include using namespace std; int main() ( // This array can store upto 12 elements (2x3x2) int test(2)(3)(2) = ( ( (1, 2), (3, 4), (5, 6) ), ( (7, 8), (9, 10), (11, 12) ) ); // Displaying the values with proper index. for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( cout << "test(" << i << ")(" << j << ")(" << k << ") = " << test(i)(j)(k) << endl; ) ) ) return 0; )

Παραγωγή

 δοκιμή (0) (0) (0) = 1 δοκιμή (0) (0) (1) = 2 δοκιμή (0) (1) (0) = 3 δοκιμή (0) (1) (1) = 4 δοκιμή ( 0) (2) (0) = 5 δοκιμή (0) (2) (1) = 6 δοκιμή (1) (0) (0) = 7 δοκιμή (1) (0) (1) = 8 δοκιμή (1) (1) (0) = 9 δοκιμή (1) (1) (1) = 10 δοκιμή (1) (2) (0) = 11 δοκιμή (1) (2) (1) = 12

Η βασική ιδέα της εκτύπωσης στοιχείων μιας τρισδιάστατης συστοιχίας είναι παρόμοια με εκείνη ενός 2D πίνακα.

Ωστόσο, δεδομένου ότι χειριζόμαστε 3 διαστάσεις, χρησιμοποιούμε ένθετο για βρόχο με 3 συνολικούς βρόχους αντί μόνο 2:

  • ο εξωτερικός βρόχος από i == 0για i == 1πρόσβαση στην πρώτη διάσταση του πίνακα
  • ο μεσαίος βρόχος από j == 0για j == 2πρόσβαση στη δεύτερη διάσταση του πίνακα
  • ο εσωτερικός βρόχος από k == 0την k == 1πρόσβαση στην τρίτη διάσταση του πίνακα

Όπως μπορούμε να δούμε, η πολυπλοκότητα του πίνακα αυξάνεται εκθετικά με την αύξηση των διαστάσεων.

ενδιαφέροντα άρθρα...