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

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

Τι είναι η τυπική βιβλιοθήκη προτύπων;

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

instagram viewer

Η τυπική βιβλιοθήκη προτύπων στο C ++ αποτελείται από τέσσερα στοιχεία:

  1. Αλγόριθμοι
  2. Εμπορευματοκιβώτια
  3. Λειτουργίες
  4. Επαναληπτές

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

Αλγόριθμοι σε STL

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

Αρχικά, πρέπει να εισαγάγετε το κεφαλίδα στο αρχείο C ++. Η σύνταξη έχει ως εξής:

#περιλαμβάνω 

Για τις επερχόμενες μεθόδους, θεωρήστε μια μεταβλητή πίνακα με τις τιμές των {6, 2, 9, 1, 4} ως παράδειγμα.

int arr [] = {6, 2, 9, 1, 4};

είδος()

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

Σχετιζομαι με: Εισαγωγή στον Αλγόριθμο Συγχώνευσης Ταξινόμησης

Σύνταξη:

ταξινόμηση (start_iterator, end_iterator);

Ακολουθεί ένα γρήγορο παράδειγμα:

ταξινόμηση (arr, arr + 5);
για (int i = 0; εγώ <5; εγώ ++) {
<< arr [i] << "";
}

Παραγωγή:

1 2 4 6 9

ΑΝΤΙΣΤΡΟΦΗ()

ο ΑΝΤΙΣΤΡΟΦΗ() Η συνάρτηση αντιστρέφει τη σειρά των στοιχείων στην καθορισμένη δομή δεδομένων. Δέχεται δύο παραμέτρους: τον επαναληπτικό εκκίνησης και τον επαναληπτικό τερματισμού.

Σύνταξη:

αντίστροφη (start_iterator, end_iterator);

Ακολουθεί ένα σύντομο παράδειγμα για την παραπάνω μέθοδο:

αντίστροφη (arr, arr + 5);
για (int i = 0; εγώ <5; εγώ ++) {
<< arr [i] << "";
}

Παραγωγή:

4 1 9 2 6

* min_element () και * max_element ()

Οι λειτουργίες * max_element () και * ελάχιστο στοιχείο () επιστρέψτε τη μέγιστη και ελάχιστη τιμή μέσα στην καθορισμένη δομή δεδομένων, αντίστοιχα. Και οι δύο αυτές λειτουργίες δέχονται δύο ορίσματα: τον επαναληπτικό εκκίνησης και τον επαναληπτικό τερματισμού.

Σύνταξη:

* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);

Ας μάθουμε ποιες τιμές επιστρέφουν αυτές οι συναρτήσεις όταν τις καλέσουμε στον πίνακα παραδείγματος:

cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;

Παραγωγή:

9
1

δυαδική αναζήτηση ()

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

Η δυαδική αναζήτηση λειτουργεί μόνο σε ταξινομημένες δομές δεδομένων. Επομένως, θα πρέπει να καλέσετε το είδος() μέθοδος πριν από το δυαδική αναζήτηση () μέθοδος.

Σύνταξη:

binary_search (start_iterator, end_iterator, value_to_find)

Ακολουθεί μια επίδειξη αυτής της μεθόδου:

ταξινόμηση (arr, arr + 5);
binary_search (arr, arr + 5, 2); cout << "Το στοιχείο βρέθηκε": cout << "Το στοιχείο δεν βρέθηκε";
binary_search (arr, arr + 5, 7); cout << "Το στοιχείο βρέθηκε": cout << "Το στοιχείο δεν βρέθηκε";

Παραγωγή:

Βρέθηκε στοιχείο
Το στοιχείο δεν βρέθηκε

μετρώ()

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

Σύνταξη:

μέτρηση (start_iterator, end_iterator, value_to_count);

Ακολουθεί ένα παράδειγμα αυτής της μεθόδου:

cout << count (arr, arr + 5, 2) << endl;

Παραγωγή:

1

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

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

Κατά την προετοιμασία της μεταβλητής κοντέινερ, πρέπει να αναφέρετε τα πρωτόγονα δεδομένα όπως int, απανθρακώνω, σειρά μεσα στην <> αγκύλες

Ας εξερευνήσουμε μερικά από αυτά τα δοχεία με περισσότερες λεπτομέρειες:

Διάνυσμα

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

Σύνταξη:

#περιλαμβάνω 
διάνυσμα μεταβλητή_ όνομα;

Ακολουθούν μερικές σημαντικές διανυσματικές μέθοδοι:

  1. push_back (τιμή): Αυτή η μέθοδος προσαρτά τα δεδομένα στο διάνυσμα.
  2. pop_back (): Αυτή η μέθοδος αφαιρεί το τελευταίο στοιχείο από το διάνυσμα.
  3. εισαγωγή (ευρετήριο, τιμή): Αυτή η μέθοδος εισάγει νέα στοιχεία πριν από το στοιχείο στην καθορισμένη θέση.
  4. Μέγεθος(): Αυτή η μέθοδος επιστρέφει το μέγεθος του διανύσματος.
  5. αδειάζω(): Αυτή η μέθοδος ελέγχει εάν το διάνυσμα είναι κενό ή όχι.
  6. εμπρός(): Αυτή η μέθοδος επιστρέφει την πρώτη τιμή του διανύσματος.
  7. πίσω(): Η μέθοδος πίσω επιστρέφει την τελευταία τιμή του διανύσματος.
  8. στο (ευρετήριο): Αυτή η μέθοδος επιστρέφει την τιμή στην καθορισμένη θέση.
  9. διαγραφή (ευρετήριο): Η μέθοδος διαγραφής αφαιρεί στοιχεία από το δεδομένο ευρετήριο.
  10. Σαφή(): Αυτή η μέθοδος διαγράφει όλα τα στοιχεία του διανύσματος.
διάνυσμα  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v.insert (v.begin () + 1, 7);
cout << "Το μέγεθος του δεδομένου διανύσματος" << v.size () << endl;
αν (v.empty ()) {
cout << "Το διάνυσμα είναι άδειο" << endl;
} αλλιώς {
cout << "Το διάνυσμα δεν είναι κενό" << endl;
}
cout << "Το στοιχείο στην πρώτη θέση είναι" << v.front () << endl;
cout << "Το στοιχείο στην τελευταία θέση είναι" << v.back () << endl;
cout << "Το στοιχείο στη δεδομένη θέση είναι" << v.at (4) << endl;
v.erase (v.begin () + 1);
για (int i = 0; i cout << v [i] << "";
}

Παραγωγή:

Το μέγεθος του δεδομένου διανύσματος 6
Το διάνυσμα δεν είναι κενό
Το στοιχείο στην πρώτη θέση είναι 23
Το στοιχείο στην τελευταία θέση είναι 5
Το στοιχείο στη δεδομένη θέση είναι 10
23 12 56 10 5

Ουρά

Στη δομή δεδομένων ουράς, τα στοιχεία εισάγονται από το πίσω μέρος και διαγράφονται από μπροστά. Ως εκ τούτου, ακολουθεί την προσέγγιση FIFO ("first in, first out").

Σύνταξη:

#περιλαμβάνω 
Ουρά μεταβλητή_ όνομα;

Ακολουθούν ορισμένες σημαντικές μέθοδοι ουράς:

  1. ώθηση (τιμή): Αυτή η μέθοδος προσθέτει στοιχεία στην ουρά.
  2. κρότος(): Αυτή η μέθοδος διαγράφει το πρώτο στοιχείο της ουράς.
  3. Μέγεθος(): Αυτή η μέθοδος επιστρέφει το μέγεθος της ουράς.
  4. εμπρός(): Αυτή η μέθοδος επιστρέφει το πρώτο στοιχείο της ουράς.
  5. πίσω(): Αυτή η μέθοδος επιστρέφει το τελευταίο στοιχείο της ουράς.
ουρά  q;
q. push (30);
q. push (40);
q. push (50);
q. push (60);
q. push (70);
cout << "Το πρώτο στοιχείο είναι" << q.front () << endl;
cout << "Το τελευταίο στοιχείο είναι" << q.back () << endl;
cout << "Το μέγεθος της ουράς είναι" << q.size () << endl;
q.pop ();
<< "Εκτύπωση όλων των στοιχείων της ουράς" << endl;
ενώ (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Παραγωγή:

Το πρώτο στοιχείο είναι 30
Το τελευταίο στοιχείο είναι 70
Το μέγεθος της ουράς είναι 5
Εκτύπωση όλων των στοιχείων της ουράς
40 50 60 70

Σωρός

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

Σύνταξη:

#περιλαμβάνω 
σωρός μεταβλητή_ όνομα;

Ακολουθούν ορισμένες σημαντικές μέθοδοι στοίβας:

  1. ώθηση (τιμή): Αυτή η μέθοδος ωθεί το στοιχείο στη στοίβα.
  2. κρότος(): Αυτή η μέθοδος διαγράφει το επάνω στοιχείο της στοίβας.
  3. μπλουζα(): Αυτή η μέθοδος επιστρέφει την τιμή του τελευταίου στοιχείου που έχει εισαχθεί στη στοίβα.
  4. Μέγεθος(): Αυτή η μέθοδος επιστρέφει το μέγεθος της στοίβας.
  5. αδειάζω(): Αυτή η μέθοδος ελέγχει εάν η στοίβα είναι κενή ή όχι.
στοίβα  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Η κορυφή της στοίβας περιέχει" << s.top () << endl;
s.pop ();
cout << "Η κορυφή της στοίβας μετά την εκτέλεση της ποπ λειτουργίας:" << s.top () << endl;
cout << "Εκτύπωση όλων των στοιχείων της στοίβας" << endl;
ενώ (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Παραγωγή:

Το πάνω μέρος της στοίβας περιέχει 60
Το πάνω μέρος της στοίβας μετά την εκτέλεση της ποπ λειτουργίας: 50
Εκτύπωση όλων των στοιχείων της στοίβας
50 40 30

Σειρά

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

Σύνταξη:

#περιλαμβάνω 
σειρά μεταβλητή_ όνομα;

Ακολουθούν ορισμένες σημαντικές μέθοδοι που:

  1. ένθετο (τιμή): Αυτή η μέθοδος εισάγει στοιχεία στο σύνολο.
  2. να αρχίσει(): Αυτή η μέθοδος επιστρέφει τον επαναληπτικό στο πρώτο στοιχείο του συνόλου.
  3. τέλος(): Αυτή η μέθοδος επιστρέφει τον επαναληπτικό στο τελευταίο στοιχείο του συνόλου.
  4. Μέγεθος(): Αυτή η μέθοδος επιστρέφει το μέγεθος του σετ.
  5. αδειάζω(): Αυτή η μέθοδος ελέγχει εάν το σετ είναι κενό ή όχι.
  6. εύρεση (τιμή): Αυτή η μέθοδος επιστρέφει τον επαναληπτικό στο στοιχείο που περνά στην παράμετρο. Εάν το στοιχείο δεν βρεθεί, τότε αυτή η συνάρτηση επιστρέφει τον επαναληπτή στο τέλος του συνόλου.
  7. διαγραφή (τιμή): Αυτή η μέθοδος διέγραψε το καθορισμένο στοιχείο από το σύνολο.
σύνολο  s;
s.insert (20);
s.insert (30);
s.insert (40);
s.insert (50);
s.insert (60);
s.insert (60);
s.insert (60);
auto i = s.begin ();
<< "Στοιχείο στην πρώτη θέση" << * i << endl;
cout << "Το μέγεθος του σετ" << s.size () << endl;
s.find (20)! = s.end (); cout << "Το στοιχείο βρέθηκε" << endl: cout << "Το στοιχείο δεν βρέθηκε" << endl;
s.erase (30);
<< "Εκτύπωση όλων των στοιχείων" << endl;
για (auto i = s.begin (); i! = s.end (); εγώ ++) {
cout << * i << "";
}

Παραγωγή:

Στοιχείο στην πρώτη θέση 20
Το μέγεθος του σετ 5
Βρέθηκε στοιχείο
Εκτύπωση όλων των στοιχείων
20 40 50 60

Το C ++ δεν χρειάζεται να είναι σκληρό

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

Ωστόσο, εάν αυτή είναι η πρώτη σας μάθηση C ++, ξεκινήστε μαθαίνοντας τα βασικά προτού προχωρήσετε στην κατανόηση του STL.

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Πώς να μάθετε τον προγραμματισμό C ++: 6 ιστότοποι για να ξεκινήσετε

Θέλετε να μάθετε C ++; Ακολουθούν οι καλύτεροι ιστότοποι και τα διαδικτυακά μαθήματα για το C ++ για αρχάριους και για εμπειρίες προγραμματιστών.

Διαβάστε Επόμενο

Σχετικά θέματα
  • Προγραμματισμός
  • Εκμάθηση κωδικοποίησης
  • Λειτουργικός προγραμματισμός
Σχετικά με τον Συγγραφέα
Νίτιν Ραγκανάθ (Δημοσιεύθηκαν 22 άρθρα)

Η Nitin είναι ένας άπληστος προγραμματιστής λογισμικού και φοιτητής μηχανικής υπολογιστών που αναπτύσσει εφαρμογές ιστού χρησιμοποιώντας τεχνολογίες JavaScript Εργάζεται ως ανεξάρτητος προγραμματιστής ιστού και του αρέσει να γράφει για Linux και προγραμματισμό στον ελεύθερο χρόνο του.

Περισσότερα από τον Nitin Ranganath

Εγγραφείτε στο Newsletter μας

Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Ένα ακόμη βήμα…!

Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.

.