Πρότυπη βιβλιοθήκη C++

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
(Ανακατεύθυνση από C++ Πρότυπη βιβλιοθήκη)
Μετάβαση σε: πλοήγηση, αναζήτηση

Στην γλώσσα προγραμματισμού C++, η Πρότυπη βιβλιοθήκη C++ είναι ένα σύνολο από κλάσεις-αντικείμενα (classes) αλλά και συναρτήσεις, που έχουν γραφτεί στο πυρήνα της γλώσσας και είναι μέρος του πρότυπου της γλώσσας (η βιβλιοθήκη ανήκει στο ορισμό-πρότυπο της γλώσσας κατά ISO) [1]. Η βιβλιοθήκη παρέχει στο προγραμματιστή γενικά κοντέινερ (containers) για τύπους δεδομένων, κλάσεις-αντικείμενα, συναρτήσεις αντικειµενοστρεφή προγραμματισμού, γενικά αλφαριθμητικά, ροές δεδομένων (streams για την είσοδο-έξοδο δεδομένων), υποστήριξη νέων δυνατοτήτων προγραμματισμού αλλά και συναρτήσεων καθημερινής χρήστης (όπως της εύρεσης τετραγωνικής ρίζας αριθμού). Η Πρότυπη βιβλιοθήκη C++ συμπεριλαμβάνει και 18 αρχεία επικεφαλίδων (header files) τα οποία έχουν επέκταση το ".h" από την C Πρότυπη βιβλιοθήκη. Η χρήση αυτών των βιβλιοθηκών έχει αποδοκιμαστεί [2]. Τα αρχεία επικεφαλίδων της Πρότυπης βιβλιοθήκης C++ δεν έχουν επέκταση το ".h" και βρίσκονται κάτω από το χώρο ονομάτων (namespace) std [3].

Η Πρότυπη βιβλιοθήκη C++ είναι βασισμένη στους φορμαλισμούς της Στάνταρντ βιβλιοθήκης προτύπων (Standard Template Library: STL). Παρόλο που η Πρότυπη βιβλιοθήκη C++ και η βιβλιοθήκη STL μοιράζονται πολλά χαρακτηριστικά, καμία δεν αποτελεί αυστηρό υποσύνολο της άλλης. Συγκεκριμένα η Πρότυπη βιβλιοθήκη C++ έχει επηρεαστεί [4] από το έργο του Αλεξάντερ Στεπάνοβ και του Μένγκ Λι. [5]

Η Πρότυπη βιβλιοθήκη C++ υποβλήθηκε στη δημιουργία του πρότυπου (ISO) για την C++ και συνεχώς εξελίσσεται η λειτουργικότητά της [6].

Πρότυπα αρχεία επικεφαλίδων[Επεξεργασία | επεξεργασία κώδικα]

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

Κοντέινερ (containers)[Επεξεργασία | επεξεργασία κώδικα]

<bitset>
Παρέχει ένα κοντέινερ τύπου std::bitset, δηλαδή ένα πίνακα μπιτ (bit) - με λογικές τιμές τύπου bool (boolean).
<deque>
Παρέχει ένα κοντέινερ τύπου std::deque, δηλαδή μια ουρά στοιχείων όπου στοιχεία μπορούν να αφαιρεθούν και από την αρχή και από το τέλος.
<list>
Παρέχει ένα κοντέινερ τύπου std::list, δηλαδή μια λίστα στοιχείων.
<map>
Παρέχει ένα κοντέινερ τύπου std::map και ένα τύπου std::multimap, δηλαδή ένα ταξινομημένο πίνακα συσχετισμένων στοιχείων, και ένα πολλαπλό πίνακα συσχετισμένων στοιχείων.
<queue>
Παρέχει ένα κοντέινερ τύπου std::queue, δηλαδή μια ουρά στοιχείων.
<set>
Παρέχει ένα κοντέινερ τύπου std::set και τύπου std::multiset, δηλαδή ένα ταξινομημένο κοντέινερ συσχετισμένων στοιχείων.
<stack>
:Παρέχει ένα κοντέινερ τύπου std::stack, δηλαδή μια στοίβα στοιχείων.
<vector>
Παρέχει ένα κοντέινερ τύπου std::vector, δηλαδή ένα δυναμικό πίνακα στοιχείων.

Γενικά[Επεξεργασία | επεξεργασία κώδικα]

<algorithm>
Είναι το αρχείο επικεφαλίδας για γενικούς αλγόριθμους που εφαρμόζονται σε κοντέινερ.
<functional>
Είναι το αρχείο επικεφαλίδας για συγκεκριμένες λειτουργικότητες για τις κλάσεις της βιβλιοθήκης, οι οποίες χρησιμοποιούνται μαζί με τους στάνταρντ αλγόριθμους.
<iterator>
Είναι το αρχείο επικεφαλίδας για πρότυπα αντικειμένων-προσπελαστών (iterators). Οι προσπελαστές χρησιμοποιούνται μέσα σε βρόχους με τους οποίους μπορούμε να προσπελάσουμε τα δεδομένα ενός κοντέινερ.
<locale>
Κλάσεις και πρότυπα για την κωδικοποίηση και χρήση διαφορετικών φυσικών-γλωσσών.
<memory>
Λειτουργίες για διαχείριση μνήμης στην C++, συμπεριλαμβάνεται και η κλάση std::auto_ptr.
<stdexcept>
Περιέχει τις πρότυπες κλάσεις εξαιρέσεων όπως τη std::logic_error και την std::runtime_error, οι οποίες κληρονομούνται από την κλάση std::exception.
<utility>
Παρέχει την πρότυπη κλάση std::pair. Χρησιμοποιείται σε δομές όπου χρειάζονται ζευγάρια αντικειμένων.

Αλφαριθμητικά[Επεξεργασία | επεξεργασία κώδικα]

<string>
Παρέχει το αντικείμενο-κλάση std::string με την λειτουργικότητα ενός αλφαριθμητικού.

Ροές δεδομένα και είσοδος/έξοδος[Επεξεργασία | επεξεργασία κώδικα]

<fstream>
Παρέχει τις δυνατότητες εισόδου/εξόδου μέσω κάποιου εξωτερικού αρχείου (ροές δεδομένων προς και από ένα εξωτερικό αρχείο).
<iomanip>
Παρέχει τις δυνατότητες να προσαρμοστεί η έξοδος, όπως για παράδειγμα μέσω της βάσης αρίθμησης για τους ακέραιους αριθμούς και για την αριθμητική ακρίβεια στους δεκαδικούς αριθμούς.
<ios>
Παρέχει διάφορους τύπους δεδομένων και συναρτήσεις για την λειτουργία των ροών δεδομένων (iostreams).
<iosfwd>
Παρέχει λειτουργικότητα για "forward declaration" τύπων για τις διάφορες κλάσεις-αντικείμενα εισόδου-εξόδου.
<iostream>
Παρέχει την βασική είσοδο/έξοδο της C++ (ροές δεδομένων όπως διάβασμα από το πληκτρολόγιο μέσω της cin ή γράψιμο στην κονσόλα μέσω του cout).
<istream>
Παρέχει την κλάση-πρότυπο std::istream όπως και άλλες σχετικές κλάσεις-αντικείμενα για είσοδο (ροές εισόδου δεδομένων).
<ostream>
Παρέχει την κλάση-πρότυπο std::ostream όπως και άλλες σχετικές κλάσεις-αντικείμενα για έξοδο (ροές εξόδου δεδομένων).
<sstream>
Παρέχει την κλάση-πρότυπο std::sstream όπως και άλλες σχετικές κλάσεις-αντικείμενα για επεξεργασία αλφαριθμητικών (ροές δεδομένων αλφαριθμητικών).
<streambuf>
Παρέχει λειτουργικότητα ανάγνωσης και γραφής για/από συγκεκριμένους τύπους σειρών χαρακτήρων, όπως εξωτερικά αρχεία η αλφαριθμητικά.

Αριθμητικά[Επεξεργασία | επεξεργασία κώδικα]

<complex>
Παρέχει την κλάση-πρότυπο std::complex όπως και άλλες σχετικές συναρτήσεις για την χρήση μιγαδικών αριθμών.
<numeric>
Παρέχει αλγόριθμους για αριθμητικές μεθόδους επεξεργασίας.
<valarray>
Παρέχει την κλάση-πρότυπο std::valarray, μια κλάση-πίνακα για αριθμητική επεξεργασία.

Υποστήριξη της γλώσσας[Επεξεργασία | επεξεργασία κώδικα]

<exception>
Παρέχει διάφορους τύπους και συναρτήσεις σχετικέ με το χειρισμό εξαιρέσεων, συμπεριλαμβανομένου του std::exception, μια βασική κλάση η οποία χειρίζεται όλες τις εξαιρέσεις που δημιουργούνται από την πρότυπη βιβλιοθήκη της C++.
<limits>
Παρέχει τη κλάση-πρότυπο std::numeric_limits, η οποία περιέχει τις ιδιότητες των βασικών αριθμητικών τύπων.
<new>
Παρέχει τους τελεστές new και delete και άλλες συναρτήσεις και τύπους που είναι βασικοί για την διαχείριση μνήμης στην C++.
<typeinfo>
Παρέχει λειτουργικότητες της C++ κατά την εκτέλεση-τρέξιμο του τελικού προγράμματος.

C Πρότυπη βιβλιοθήκη[Επεξεργασία | επεξεργασία κώδικα]

Κάθε αρχείο επικεφαλίδας της πρότυπης βιβλιοθήκης C συμπεριλαμβάνεται στην πρότυπη βιβλιοθήκη C++ με διαφορετικό όνομα με την διαφορά αφαιρείται το τελικό .h και προστίθεται στην αρχή ένα 'c'. Για παράδειγμα το αρχείο επικεφαλίδας 'time.h' της C γίνεται 'ctime' στην C++. Η μοναδική διαφορά μεταξύ των αρχείων επικεφαλίδων από αυτών της παραδοσιακής βιβλιοθήκης της C είναι ότι οι συναρτήσεις μπορούν να χρησιμοποιηθούν κάτω από το χώρο ονομάτων (namespace) std:: (αν και κάποιοι μεταγλωττιστές - compilers αυτό κάνουν). Στο ISO της γλώσσας C, οι συναρτήσεις στην πρότυπη βιβλιοθήκη μπορούν να υλοποιούνται χρησιμοποιώντας macros, κάτι το οποίο δεν επιτρέπεται στο ISO της C++.

Header Header Header Header Header Header
<cassert> <cctype> <cerrno> <cfloat> <ciso646> <climits>
<clocale> <cmath> <csetjmp> <csignal> <cstdlib> <cstddef>
<cstdarg> <cstdio> <cstring> <ctime> <cwchar> <cwctype>

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. ISO/IEC 14882:2003(E) Programming Languages — C++ §17-27
  2. ISO/IEC 14882:2003(E) Programming Languages — C++ §D.5
  3. Bjarne Stroustrup (1997 3rd Printing). The C++ programming language. Addison-Wesley. σελ. 431. ISBN 0-201-88954-4. 
  4. Bjarne Stroustrup. The Design and Evolution of C++ §8.5. Addison Wesley. ISBN 0-201-54330-3. 
  5. Alexander Stepanov, Meng Lee. «The Standard Template Library». HP Labs. http://www.hpl.hp.com/techreports/94/HPL-94-34.html. Ανακτήθηκε στις 1994-08-01. 
  6. «JTC1/SC22/WG21 - The C++ Standards Committee». ISO/IEC. http://www.open-std.org/Jtc1/sc22/wg21/. Ανακτήθηκε στις 2009-07-07. 
Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα C++ Standard Library της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).