STL σε c ++: Όλα όσα πρέπει να γνωρίζετε



Αυτό το άρθρο θα σας παρέχει μια Λεπτομερή και περιεκτική γνώση του STL στο C ++ και θα σας δώσει μια ιδέα για τα διάφορα δοχεία επίσης.

Η τυπική βιβλιοθήκη προτύπων (STL) είναι ένα σύνολο τάξεων προτύπων C ++ για την παροχή κοινών δομών και λειτουργιών δεδομένων προγραμματισμού όπως λίστες, στοίβες, πίνακες κ.λπ. Σε αυτό το άρθρο STL στο C ++ θα συζητήσουμε τους ακόλουθους δείκτες:

Προχωρώντας με αυτό το άρθρο σχετικά με το STL στο C ++





Πρότυπα C ++

Το C ++ μας παρέχει μια δυνατότητα προτύπων που επιτρέπει σε λειτουργίες και τάξεις να λειτουργούν με γενικούς τύπους. Αυτό επιτρέπει την επαναχρησιμοποίηση μιας συνάρτησης ή κλάσης και της επιτρέπει να λειτουργεί σε πολλούς διαφορετικούς τύπους δεδομένων χωρίς να ξαναγραφεί για κάθε έναν.

Προχωρώντας με αυτό το άρθρο σχετικά με το STL στο C ++



Γενικές λειτουργίες και STL

Κατά τον προγραμματισμό πολλές φορές υπάρχει ανάγκη δημιουργίας λειτουργιών που εκτελούν τις ίδιες λειτουργίες αλλά λειτουργούν με διαφορετικούς τύπους δεδομένων. Έτσι, για να ξεπεραστεί αυτό το πρόβλημα, το C ++ παρέχει μια δυνατότητα δημιουργίας μιας μόνο γενικής λειτουργίας αντί πολλών λειτουργιών που μπορούν να λειτουργήσουν με διαφορετικό τύπο δεδομένων χρησιμοποιώντας την παράμετρο προτύπου. Η συλλογή αυτών των γενικών τάξεων και λειτουργιών ονομάζεται Standard Template Library (STL)

Τα στοιχεία του STL που αποτελούν πλέον μέρος της τυπικής βιβλιοθήκης C ++ ορίζονται στο χώρο ονομάτων std. Πρέπει, επομένως, να χρησιμοποιήσουμε την οδηγία namespace για να τις εισαγάγουμε στο πρόγραμμά μας.

Σύνταξη:



Χρησιμοποιώντας το namespace std

Το STL έχει τρία συστατικά

  • Εμπορευματοκιβώτια

  • Αλγόριθμοι

  • Επαναληπτές

Αυτά τα τρία συστατικά συνεργάζονται μεταξύ τους για να παρέχουν υποστήριξη σε μια ποικιλία λύσεων προγραμματισμού. Ο αλγόριθμος χρησιμοποιεί εργοδότες για να εκτελεί λειτουργία αποθηκευμένη σε δοχεία.

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

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

Ένας επαναληπτής μπορεί να οριστεί ως ένα αντικείμενο που δείχνει ένα στοιχείο σε ένα κοντέινερ. Οι επαναληπτές μπορούν να χρησιμοποιηθούν για να μετακινηθείτε στα περιεχόμενα των δοχείων. Οι επαναληπτές αντιμετωπίζονται όπως οι δείκτες. Μπορούμε να τα αυξήσουμε ή να τα μειώσουμε. Οι επαναληπτές συνδέουν τον αλγόριθμο με κοντέινερ και διαδραματίζουν βασικό ρόλο στη διαχείριση δεδομένων που είναι αποθηκευμένα στα κοντέινερ.

Container-STL-in-C++

Προχωρώντας με αυτό το άρθρο σχετικά με το STL στο C ++

Εμπορευματοκιβώτια

Το STL ορίζει δέκα δοχεία τα οποία ομαδοποιούνται σε τρεις κατηγορίες.

Εμπορευματοκιβώτια

Περιγραφή

Αρχείο κεφαλίδας

Επαναληπτής

Διάνυσμα

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

Τυχαία πρόσβαση

Λίστα

Είναι μια αμφίδρομη γραμμική λίστα. Επιτρέπει εισαγωγή και διαγραφή οπουδήποτε

Αμφίδρομος

και

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

Τυχαία πρόσβαση

σειρά

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

Αμφίδρομος

πολλαπλά σετ

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

Αμφίδρομος

χάρτης

Είναι ένα συνεργαζόμενο κοντέινερ για την αποθήκευση μοναδικών ζευγών κλειδιών / τιμών. Κάθε κλειδί σχετίζεται με μία μόνο τιμή.

Αμφίδρομος

πολλαπλή χαρτογράφηση

Είναι ένα συσχετιζόμενο κοντέινερ για την αποθήκευση κλειδιού / τιμής στο οποίο ένα κλειδί μπορεί να συσχετιστεί με περισσότερες από μία τιμές (αντιστοίχιση από ένα προς πολλά). Επιτρέπει μια αναζήτηση βασισμένη σε κλειδιά.

Αμφίδρομος

σωρός

Μια τυπική στοίβα ακολουθεί το τελευταίο σε πρώτο-out-out (LIFO)

Χωρίς επανάληψη

Ουρά

php mysql_fetch_

Μια τυπική ουρά ακολουθεί το first-in-first-out (FIFO)

Χωρίς επανάληψη

προτεραιότητα-ουρά

Το πρώτο στοιχείο έξω είναι πάντα το στοιχείο υψηλότερης προτεραιότητας

Χωρίς επανάληψη

Εμπορευματοκιβώτια ακολουθίας

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

Το STL παρέχει τρεις τύπους στοιχείων ακολουθίας:

  • Διάνυσμα
  • Λίστα
  • και

Συνεργατικά εμπορευματοκιβώτια:

Είναι σχεδιασμένα με τέτοιο τρόπο ώστε να υποστηρίζουν την άμεση πρόσβαση σε στοιχεία χρησιμοποιώντας κλειδιά. Δεν είναι διαδοχικά. Υπάρχουν τέσσερις τύποι

συνεργατικά εμπορευματοκιβώτια:

  1. Σειρά
  2. Πολλαπλά σετ
  3. Χάρτης
  4. Πολλαπλή χαρτογράφηση

Όλα τα παραπάνω δοχεία αποθηκεύουν δεδομένα σε μια δομή που ονομάζεται δέντρο που διευκολύνει γρήγορα

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

Και ο χάρτης ή το Multimap χρησιμοποιούνται για την αποθήκευση αντικειμένων σε ζεύγος, το ένα ονομάζεται κλειδί και άλλο

ονομάζεται τιμή.

Παράγωγα εμπορευματοκιβώτια:

Το STL παρέχει τρία προερχόμενα κοντέινερ, δηλαδή, στοίβα, ουρά και προτεραιότητα_queue. Αυτά είναι επίσης γνωστά ως προσαρμογείς εμπορευματοκιβωτίων.

Υπάρχουν τρεις τύποι παραγόμενων δοχείων:

1. Στοίβα

2. Ουρά

3. Προτεραιότητα_quue

Στοίβες, ουρές και ουρά προτεραιότητας μπορούν εύκολα να δημιουργηθούν από διαφορετικά κοντέινερ ακολουθίας. Τα παραγόμενα κοντέινερ δεν υποστηρίζουν επαναληπτικά και επομένως δεν μπορούμε να τα χρησιμοποιήσουμε για χειρισμό δεδομένων. Ωστόσο, υποστηρίζουν τη λειτουργία δύο μελών pop () και push () για την εφαρμογή διαγραφής και εισαγωγής λειτουργιών.

Προχωρώντας με αυτό το άρθρο σχετικά με το STL στο C ++

Αλγόριθμοι

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

Οι αλγόριθμοι STL ενισχύουν τη φιλοσοφία της επαναχρησιμοποίησης. Χρησιμοποιώντας αυτούς τους αλγόριθμους, οι προγραμματιστές μπορούν να εξοικονομήσουν πολύ χρόνο και προσπάθεια. Για να έχουμε πρόσβαση στους αλγόριθμους STL, πρέπει να συμπεριλάβουμε στο πρόγραμμά μας.

Ο αλγόριθμος STL, με βάση τη φύση των λειτουργιών που εκτελούν, μπορεί να κατηγοριοποιηθεί ως εξής:

  • Αλγόριθμοι μη μεταλλαγής

  • Μεταλλαγή αλγορίθμων

  • Αλγόριθμοι ταξινόμησης

  • Ορισμός αλγορίθμων

  • Σχεσιακός αλγόριθμος

Προχωρώντας με αυτό το άρθρο σχετικά με το STL στο C ++

Επαναληπτές:

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

Υπάρχουν πέντε τύποι επαναληπτικών:

1. Είσοδος

2. Έξοδος

3. Προώθηση

4. Αμφίδρομη

5. Τυχαία

Επαναληπτής

Μέθοδος πρόσβασης

Κατεύθυνση κίνησης

Ικανότητα εισόδου / εξόδου

Παρατήρηση

Εισαγωγή

Γραμμικός

Μόνο προς τα εμπρός

Μόνο για ανάγνωση

Δεν είναι δυνατή η αποθήκευση

Παραγωγή

Γραμμικός

Μόνο προς τα εμπρός

Μόνο εγγραφή

Δεν είναι δυνατή η αποθήκευση

Προς τα εμπρός

Γραμμικός

Μόνο προς τα εμπρός

Διαβάζω γράφω

Μπορεί να σωθεί

Αμφίδρομος

Γραμμικός

Μπροστά και πίσω

Διαβάζω γράφω

Μπορεί να σωθεί

Τυχαίος

Τυχαίος

Μπροστά και πίσω

Διαβάζω γράφω

Μπορεί να σωθεί

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

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

Έτσι, έχουμε φτάσει στο τέλος αυτού του άρθρου σχετικά με το «STL στο C ++». Εάν θέλετε να μάθετε περισσότερα, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

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