Προγραμματισμός

Πώς να εργαστείτε με ακανόνιστες συστοιχίες στο C #

Ένας πίνακας μπορεί να οριστεί ως μια διαδοχική συλλογή στοιχείων του ίδιου τύπου δεδομένων. Τα στοιχεία ενός πίνακα αποθηκεύονται σε γειτονικές θέσεις μνήμης. Οι συστοιχίες μπορούν να είναι μονές ή πολυδιάστατες. Ένας ακανόνιστος πίνακας είναι ένας ειδικός τύπος μιας πολυδιάστατης συστοιχίας στην οποία καθένας από τους πίνακες (ένας ακανόνιστος πίνακας είναι στην πραγματικότητα ένας πίνακας συστοιχιών) μπορεί να έχει διαφορετικό μέγεθος.

Μπορείτε να έχετε οδοντωτές συστοιχίες σε οποιαδήποτε γλώσσα υπολογιστή που παρέχει υποστήριξη για συστοιχίες. Ένας ακανόνιστος πίνακας (επίσης γνωστός ως ragged array) είναι ένας πίνακας συστοιχιών στον οποίο οι συστοιχίες μελών μπορούν με τη σειρά τους να έχουν διαφορετικές διαστάσεις και μεγέθη. Μπορείτε να εφαρμόσετε πολυδιάστατες συστοιχίες με οδοντωτές συστοιχίες για βελτίωση της απόδοσης.

Ξεκινώντας με οδοντωτές συστοιχίες στο C #

Σε αυτήν την ενότητα θα διερευνήσουμε τον τρόπο δήλωσης, αρχικοποίησης και πρόσβασης σε οδοντωτές συστοιχίες. Όπως γνωρίζουμε, ένας ακανόνιστος πίνακας αποτελείται από έναν πίνακα συστοιχιών παρόμοιων ή διαφορετικών μεγεθών. Με άλλα λόγια, σε μια ακανόνιστη συστοιχία, ο αριθμός των γραμμών είναι σταθερός, αλλά ο αριθμός των στηλών μπορεί να διαφέρει. Όταν δηλώνετε μια οδοντωτή συστοιχία, μπορείτε απλώς να δηλώσετε τον αριθμό των σειρών του πίνακα και να προτιμήσετε να καθορίσετε τον αριθμό των στηλών κατά το χρόνο εκτέλεσης.

Ενημερώστε μας για να καταλάβουμε όλα όσα έχουμε μάθει μέχρι τώρα σε οδοντωτές συστοιχίες με μερικά παραδείγματα κώδικα. Εξετάστε τον ακόλουθο πίνακα.

string [] [] str = νέα συμβολοσειρά [5] [];

Έχετε δηλώσει τις σειρές του πίνακα. Υπάρχουν 5 σειρές σε αυτόν τον πίνακα που μπορούν με τη σειρά τους να περιέχουν 5 συστοιχίες συμβολοσειρών διαφορετικών μηκών. Ας δούμε τώρα πώς μπορούμε να δηλώσουμε 5 πίνακες στον πίνακα που ονομάζεται str, κάθε ένα από τα διαφορετικά μήκη. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να επιτευχθεί αυτό.

str [0] = νέα συμβολοσειρά [5];

str [1] = νέα συμβολοσειρά [10];

str [2] = νέα συμβολοσειρά [20];

str [3] = νέα συμβολοσειρά [50];

str [4] = νέα συμβολοσειρά [10];

Τώρα μπορείτε να αποθηκεύσετε στοιχειοσειρές συμβολοσειρών διαφορετικών μηκών όπως φαίνεται στο παρακάτω απόσπασμα κώδικα.

str [0] [0] = "Pune";

str [1] [0] = "Καλκούτα";

str [2] [0] = "Μπανγκαλόρ";

str [3] [0] = "Η ροζ πόλη με το όνομα Τζαϊπούρ";

str [4] [0] = "Χαϊντεραμπάντ";

Ακολουθεί η πλήρης λίστα κωδικών που απεικονίζει πώς μπορείτε να δηλώσετε έναν τραχύ πίνακα, να αποθηκεύσετε δεδομένα και, στη συνέχεια, να το ανακτήσετε και να το εμφανίσετε στην κονσόλα

δημόσιο στατικό κενό Κεντρικό (string [] args)

       {

// Πρώτα δηλώστε τον ακανόνιστο πίνακα

string [] [] str = νέα συμβολοσειρά [5] [];

str [0] = νέα συμβολοσειρά [5];

str [1] = νέα συμβολοσειρά [10];

str [2] = νέα συμβολοσειρά [20];

str [3] = νέα συμβολοσειρά [50];

str [4] = νέα συμβολοσειρά [10];

// Τώρα αποθηκεύστε δεδομένα στον ακανόνιστο πίνακα

str [0] [0] = "Pune";

str [1] [0] = "Καλκούτα";

str [2] [0] = "Μπανγκαλόρ";

str [3] [0] = "Η ροζ πόλη με το όνομα Τζαϊπούρ";

str [4] [0] = "Χαϊντεραμπάντ";

// Τέλος, εμφανίστε το περιεχόμενο καθεμιάς από τις συστοιχίες συμβολοσειρών μέσα στον ακανόνιστο πίνακα

για (int i = 0; i <5; i ++)

Console.WriteLine (str [i] [0]);

Κονσόλα. Διαβάστε ();

       }

Όπως μπορείτε να δείτε στο παραπάνω πρόγραμμα, ο αριθμός των σειρών του ακανόνιστου πίνακα είναι σταθερός αλλά ο αριθμός των στηλών ποικίλλει. Αυτό το παράδειγμα αντιπροσωπεύει έναν δισδιάστατο ακανόνιστο πίνακα. Εάν επρόκειτο να χρησιμοποιήσετε μια κανονική δισδιάστατη συστοιχία, θα πρέπει να καταναλώσετε 5 x 50, δηλαδή, 250 byte. Ο λόγος είναι ότι θα πρέπει να έχετε χώρο 50 bytes σε καθεμία από τις συστοιχίες στην ακανόνιστη συστοιχία για να φιλοξενήσετε τη μεγαλύτερη συμβολοσειρά. Σε αυτό το παράδειγμα, η μεγαλύτερη συμβολοσειρά έχει μέγεθος 50. Αντίθετα, όταν χρησιμοποιείτε μια ακανόνιστη συστοιχία, καταλήγετε να καταναλώνετε μόλις 95 byte! Ενδιαφέρον, έτσι δεν είναι;

Όταν εκτελείτε το παραπάνω πρόγραμμα, οι συμβολοσειρές που είναι αποθηκευμένες στον ακανόνιστο πίνακα εμφανίζονται στο παράθυρο της κονσόλας.

Ένα άλλο παράδειγμα - μια ακανόνιστη σειρά ακέραιων αριθμών

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

int [] [] numberArray;

Το ακόλουθο απόσπασμα κώδικα απεικονίζει πώς μπορείτε να δηλώσετε έναν ακέραιο πίνακα με ακμή, δηλαδή έναν πίνακα με οδοντωτές ρυθμίσεις που μπορεί με τη σειρά του να αποθηκεύει συστοιχίες ακέραιων διαφορετικών στοιχείων.

int [] [] numberArray = νέο int [5] [];

για (int i = 0; i <angkaArray.Length; i ++)

   {

numberArray [i] = νέο int [10 * (i + 1)];

   }

Το παραπάνω απόσπασμα κώδικα δημιουργεί έναν ακέραιο ακανόνιστο πίνακα που ονομάζεται numberArray, ο οποίος με τη σειρά του περιέχει ακέραιους πίνακες διαφόρων μεγεθών.

$config[zx-auto] not found$config[zx-overlay] not found