Πρότυπη βιβλιοθήκη C++
C++ Πρότυπη βιβλιοθήκη |
---|
Τυπική Βιβλιοθήκη Προτύπων (STL) |
C++11 |
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> |
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ ISO/IEC 14882:2003(E) Programming Languages — C++ §17-27
- ↑ ISO/IEC 14882:2003(E) Programming Languages — C++ §D.5
- ↑ Bjarne Stroustrup (1997). The C++ programming language (3η έκδοση). Addison-Wesley. σελ. 431. ISBN 0-201-88954-4.
- ↑ Bjarne Stroustrup (1994). The Design and Evolution of C++ §8.5. Addison Wesley. ISBN 0-201-54330-3.
- ↑ Alexander Stepanov, Meng Lee. «The Standard Template Library». HP Labs. Αρχειοθετήθηκε από το πρωτότυπο στις 3 Μαρτίου 2016. Ανακτήθηκε στις 28 Φεβρουαρίου 2020.
- ↑ «JTC1/SC22/WG21 - The C++ Standards Committee». ISO/IEC. Ανακτήθηκε στις 7 Ιουλίου 2009.