iterators stl
Μια πλήρης επισκόπηση των επαναληπτών στο STL.
Σε αυτό το σεμινάριο, θα εξετάσουμε τις λεπτομέρειες των επαναληπτών, τους τύπους, τα πλεονεκτήματά τους και τις διάφορες λειτουργίες που υποστηρίζουν.
oracle sql ερωτήματα παραδείγματα με απαντήσεις pdf
Τι είναι το Iterator; Σε γενικές γραμμές, ένας επαναληπτής είναι ακριβώς όπως κάθε αντικείμενο που δείχνει ένα συγκεκριμένο στοιχείο σε μια σειρά δεδομένων όπως ένας πίνακας ή ένα κοντέινερ. Ο επαναληπτής μοιάζει ακριβώς με δείκτη στο C.
=> Αναζητήστε ολόκληρη τη σειρά προπόνησης C ++ εδώ.
Τι θα μάθετε:
- ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
- Τύποι επαναληπτών
- Πλεονεκτήματα των επαναληπτών
- Λειτουργίες Iterator
- συμπέρασμα
- Συνιστώμενη ανάγνωση
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Στο STL, ένας επαναληπτικός παράγοντας είναι ένα αντικείμενο που μπορεί να χρησιμοποιηθεί για να διασχίσει ή να διαπεράσει τα στοιχεία του κοντέινερ χρησιμοποιώντας ένα σύνολο τελεστών όπως ο τελεστής αύξησης (++) ή ο τελεστής αποαναφοράς (*).
Οι επαναληπτές είναι ζωτικής σημασίας στον προγραμματισμό STL καθώς παίζουν σημαντικό ρόλο στη σύνδεση των αλγορίθμων με το κοντέινερ εκτός από την πρόσβαση και τον χειρισμό των δεδομένων που είναι αποθηκευμένα μέσα στα δοχεία.
Τύποι επαναληπτών
Ανάλογα με τη λειτουργικότητα που εφαρμόζουν οι επαναληπτές, ταξινομούνται ως εξής:
- Επαναληπτές εισόδου και εξόδου : Αυτοί είναι οι πιο απλοποιημένοι τύποι επαναληπτών. Είναι πολύ χρήσιμα σε διαδοχικές λειτουργίες εισόδου-εξόδου που περιέχουν μονό πέρασμα.
- Εμπρός Επαναληπτές : Αυτά είναι ακριβώς σαν επαναληπτικά εισόδου αλλά έχουν κατεύθυνση, δηλαδή κατεύθυνση προς τα εμπρός, με την έννοια ότι μπορούν να χρησιμοποιηθούν για να διασχίσουν ένα εύρος στην κατεύθυνση προώθησης. Όταν οι επαναλαμβανόμενοι επαναληπτές δεν είναι σταθεροί, μπορούν επίσης να χρησιμοποιηθούν ως επαναληπτές εξόδου. Τα περισσότερα τυποποιημένα κοντέινερ STL υποστηρίζουν τουλάχιστον επαναλαμβανόμενους επαναληπτές.
- Αμφίδρομοι επαναλήπτες : Αυτοί είναι παρόμοιοι με τους προωθητικούς επαναληπτές με τη μόνη διαφορά ότι είναι αμφίδρομες. Αυτό σημαίνει ότι μπορούμε να χρησιμοποιήσουμε αυτούς τους αμφίδρομους επαναληπτές για να διασχίσουμε το εύρος προς τα εμπρός και προς τα πίσω.
- Επαναληπτές τυχαίας πρόσβασης : Οι επαναληπτές τυχαίας πρόσβασης είναι οι πιο ισχυροί μεταξύ όλων των επαναληπτών. Αυτές είναι μη διαδοχικές επαναλήψεις. Οι επαναληπτικοί χρήστες τυχαίας προσπέλασης μας επιτρέπουν να έχουμε πρόσβαση σε οποιαδήποτε τυχαία τιμή εφαρμόζοντας μια μετατόπιση στην τρέχουσα τιμή χωρίς να χρειαστεί να περάσουμε διαδοχικά κάθε στοιχείο. Εμφανίζουν παρόμοιες ιδιότητες όπως το Pointers στο C.
Ένα πράγμα που πρέπει να σημειωθεί είναι ότι δεν υποστηρίζουν όλα τα κοντέινερ STL όλες τις επαναλήψεις. Διαφορετικά κοντέινερ υποστηρίζουν διαφορετικά επαναληπτικά ανάλογα με την απαίτηση της λειτουργικότητάς τους.
Ακολουθεί η λίστα των κοντέινερ που χρησιμοποιούν διαφορετικούς επαναληπτές:
Εμπορευματοκιβώτια | Επαναληπτές |
---|---|
Χάρτης | Αμφίδρομος |
Σωρός | Χωρίς επανάληψη |
Ουρά | Χωρίς επανάληψη |
Ουρά προτεραιότητας | Χωρίς επανάληψη |
Λίστα | Αμφίδρομος |
Διάνυσμα | Τυχαία πρόσβαση |
και | Τυχαία πρόσβαση |
Πολλαπλή χαρτογράφηση | Αμφίδρομος |
Σειρά | Αμφίδρομος |
Πολλαπλά σετ | Αμφίδρομος |
Πλεονεκτήματα των επαναληπτών
Οι επαναληπτές είναι εξαιρετικά χρήσιμοι ειδικά κατά τον προγραμματισμό χρησιμοποιώντας διαφορετικές περιοχές και κοντέινερ.
Μερικά από τα πλεονεκτήματα της χρήσης επαναληπτών στον προγραμματισμό μπορούν να συνοψιστούν παρακάτω:
# 1) Επαναχρησιμοποίηση κώδικα
Εφόσον χρησιμοποιούμε επαναληπτές για πρόσβαση σε στοιχεία στο πρόγραμμά μας, μπορούμε απλά να αλλάξουμε το όνομα του κοντέινερ στον ορισμό του επαναληπτικού προγράμματος και να χρησιμοποιήσουμε τον υπόλοιπο κώδικα με παρόμοιο τρόπο όποτε χρειαστεί να αλλάξουμε το κοντέινερ.
Αυτό είναι ιδιαίτερα χρήσιμο σε σενάρια όπου σκοπεύουμε να αντικαταστήσουμε ένα διανυσματικό κοντέινερ χρησιμοποιώντας ένα κοντέινερ λίστας. Εάν στη θέση των επαναληπτών χρησιμοποιούσαμε τον τελεστή (), ο κώδικας πρόσβασης στα στοιχεία θα ήταν άχρηστος όταν αλλάζουμε τα κοντέινερ.
# 2) Ευκολία και ευκολία προγραμματισμού
Οι επαναληπτές έρχονται με διάφορες ενσωματωμένες λειτουργίες που μας βοηθούν να διασχίζουμε και να έχουμε πρόσβαση στο περιεχόμενο του δοχείου εύκολα και βολικά.
Για παράδειγμα , δεν χρειάζεται να συνεχίσουμε να ελέγχουμε το τέλος της λίστας ή σαν πίνακας που πρέπει να κάνουμε ενώ χρησιμοποιούμε τελεστές () και πρέπει να αλλάξουμε τον κώδικα προγράμματος όπως όταν θέλουμε να προσθέσουμε στοιχεία και πρέπει να τα αλλάξουμε για έναν βρόχο .
Κατά τη χρήση των επαναληπτών μπορούμε να έχουμε απευθείας πρόσβαση στις λειτουργίες έναρξης () και τερματισμού () των επαναληπτών χωρίς να χρειάζεται να διατηρήσουμε μια καρτέλα όταν φτάνουμε στο τέλος της λίστας και επίσης δεν χρειάζεται να τις αλλάξουμε για ένα βρόχο.
# 3) Δυναμική προσθήκη / κατάργηση
Κατά τη χρήση επαναληπτικών, μπορούμε εύκολα και δυναμικά να προσθέσουμε ή να αφαιρέσουμε τα στοιχεία στο κοντέινερ χωρίς να χρειαστεί να μετατοπίσουμε τα στοιχεία όπως πρέπει να κάνουμε σε () τελεστές.
Ας το δείξουμε με το ακόλουθο Παράδειγμα:
#include #include using namespace std; int main() { vector vec1 = { 1, 1, 2 }; // Declaring an iterator vector::iterator i; // Inserting element for (i = vec1.begin(); i != vec1.end(); ++i) { if (i == vec1.begin()) { i = vec1.insert(i, 3); // insert 3 at the beginning of vec1 } } // contents of vec1 3 1 1 2 cout<<'Vector contents after addition'; cout< Παραγωγή:
Διάνυσμα περιεχόμενο μετά την προσθήκη
3 1 1 2
Διάνυσμα περιεχόμενο μετά τη διαγραφή
3 1 2
Όπως φαίνεται στο παραπάνω παράδειγμα, βλέπουμε ότι με τη χρήση επαναληπτών μπορούμε εύκολα να προσθέσουμε ή να αφαιρέσουμε στοιχεία από ένα κοντέινερ (διάνυσμα σε αυτήν την περίπτωση), χωρίς να χρειαστεί να καταφύγουμε στον περίπλοκο προγραμματισμό αλλαγής στοιχείων και αναδιάρθρωση του δοχείου.
Λειτουργίες Iterator
Καθώς οι ίδιοι οι επαναληπτές είναι ενσωματωμένες κατασκευές, υποστηρίζουν διάφορες λειτουργίες που μπορούν να γίνουν σε αντικείμενα επαναληπτικού χαρακτήρα. Αυτές οι λειτουργίες / λειτουργίες μας επιτρέπουν να διασχίζουμε αποτελεσματικά το εύρος και επίσης να χειριζόμαστε τα στοιχεία μέσα στο δοχείο.
Τώρα θα δούμε μερικές σημαντικές λειτουργίες που υποστηρίζουν οι επαναληπτές.
- να αρχίσει: Επιστρέφει την πρώτη ή την αρχική θέση του επαναληπτικού.
- τέλος: Επιστρέφει την τελευταία θέση ή τη θέση «μετά το τέλος» του επαναληπτικού.
- προ: Επιστρέφει το νέο επαναληπτικό μετά τη μείωση του αριθμού των θέσεων που δίνονται στο όρισμα.
- Επόμενο: Επιστρέφει νέο επαναληπτικό μετά την προώθηση ή την αύξηση του αριθμού των θέσεων που δίνονται στο όρισμα.
- εισερχόμενος: Εισάγει στοιχείο σε οποιαδήποτε δεδομένη θέση σε ένα δοχείο.
- προκαταβολή: Αυξάνει τη θέση επανάληψης στον καθορισμένο αριθμό που δίνεται στο όρισμα.
Θα δείξουμε τη χρήση ορισμένων από αυτήν τη λειτουργία / λειτουργία στο ακόλουθο πρόγραμμα:
#include #include #include using namespace std; int main() { vector v = { 1, 1,2,3,5 }; // declaring iterators to a vector vector::iterator itr1 = v.begin(); vector::iterator itr2 = v.end(); auto it = next(itr1, 2); // displaying iterator position cout << 'Using next() the new iterator is at: '; cout << *it << ' '; cout << endl; auto it1 = prev(itr2, 2); // displaying iterator position cout << 'The position of new iterator using prev() is: '; cout << *it1 << ' '; cout << endl; //advance advance(itr1,3); // displaying iterator position cout << 'After advance operation,itr1 is positioned at: '; cout << *itr1 << ' '; cout << endl; return 0; }
Παραγωγή:
Χρησιμοποιώντας το επόμενο () το νέο επαναληπτικό είναι στο: 2
Η θέση του νέου επαναληπτικού χρησιμοποιώντας prev () είναι: 3
Μετά τη λειτουργία προόδου, το itr1 τοποθετείται στο: 3
Χρησιμοποιώντας το παραπάνω πρόγραμμα αποδείξαμε τη χρήση διαφόρων επαναληπτικών λειτουργιών.
συμπέρασμα
Έτσι έχουμε φτάσει στο τέλος αυτού του σεμιναρίου για τους Iterators.
Μέχρι στιγμής έχουμε συζητήσει τα βασικά του STL, από το επόμενο σεμινάριό μας και μετά θα ξεκινήσουμε με τα κοντέινερ STL και τον προγραμματισμό τους.
=> Δείτε την πλήρη σειρά εκπαιδευτικών C ++ εδώ.
Συνιστώμενη ανάγνωση
- Ουρά προτεραιότητας στο STL
- Πίνακες σε STL
- 70+ ΚΑΛΥΤΕΡΑ C ++ Tutorials για να μάθουν τον προγραμματισμό C ++ ΔΩΡΕΑΝ
- Χορδές, Ζεύγος & Μπλούζες σε STL
- ΡΥΘΜΙΣΗ ΣΤΟ STL
- Αλγόριθμοι στο STL
- Καλύτερη δωρεάν σειρά C # Tutorial: Ο απόλυτος οδηγός C # για αρχάριους
- Τυπική βιβλιοθήκη προτύπων (STL): Μια σύντομη εισαγωγή