| C++ Πρότυπη βιβλιοθήκη |
| --- |
| * `fstream`
* `iomanip`
* `ios`
* `iostream`
* `sstream`
 |
| Τυπική Βιβλιοθήκη Προτύπων (STL) |
| * `algorithm`
* `bitset`
* `deque`
* `functional`
* `iterator`
* `list`
* `map`
* `set`
* `stack`
* `vector`
 |
| 
C++11 |
| * `array`
* `forward\_list`
* `unordered\_map`
* `unordered\_set`
 |
| C Πρότυπη βιβλιοθήκη |
| * `cassert`
* `cctype`
* `cerrno`
* `climits`
* `clocale`
* `cmath`
* `csetjmp`
* `csignal`
* `cstdarg`
* `cstddef`
* `cstdint`
* `cstdio`
* `cstdlib`
* `cstring`
* `ctime`
 |
| π • σ • ε
 |

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

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

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

Πρότυπα αρχεία επικεφαλίδων
---------------------------

Τα παρακάτω αρχεία επικεφαλίδων και ορισμών είναι μέρος της Πρότυπης βιβλιοθήκης 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 συμπεριλαμβάνεται στην πρότυπη βιβλιοθήκη 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). *The C++ programming language* (3η έκδοση). Addison-Wesley. σελ. 431. ISBN 0-201-88954-4.
4. ↑  Bjarne Stroustrup (1994). *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. Αρχειοθετήθηκε από το πρωτότυπο στις 3 Μαρτίου 2016. Ανακτήθηκε στις 28 Φεβρουαρίου 2020.
6. ↑  «JTC1/SC22/WG21 - The C++ Standards Committee». ISO/IEC. Ανακτήθηκε στις 7 Ιουλίου 2009.

Εξωτερικοί σύνδεσμοι
--------------------

* Standard C++ Library reference
* Dinkumware Standard C++ Library
* Microsoft MSDN Library - Standard C++ Library Reference
* Rogue Wave C++ Standard Library Class Reference
* Rogue Wave C++ Standard Library User Guide
* STLport
* The GNU Standard C++ Library