24. Biblioteka standardowa

Jak wszystkie nowoczesne języki programowania, C++ dostarcza, prócz narzędzi związanych z samym językiem, bibliotekę gotowych funkcji, klas, szablonów itd. Biblioteka podzielona jest na wiele części: aby z nich korzystać, w tworzonym programie wystarczy użyć odpowiednich dyrektyw #include włączających pliki nagłówkowe opisujące funkcjonalność poszczególnych modułów biblioteki (na temat plików nagłówkowych patrz rozdział o modułach i plikach nagłówkowych ). Implementacja funkcji, klas itd. z biblioteki standardowej, w postaci plików binarnych, dostarczana jest przez producenta kompilatora C++ (można również korzystać z innych, niezależnych implementacji, zarówno komercyjnych jak i typu open source).

Biblioteka standardowa nie jest tak bogata jak w innych językach, gdyż nie uwzględnia takich zagadnień jak programowanie sieciowe, graficzne, wielowątkowe, bazodanowe itd. Skupia się głównie na implementacji kolekcji (kontenerów) i algorytmów na tych kolekcjach operujących. Ta część biblioteki standardowej nazywana jest, ze względów historycznych, standardową biblioteką wzorców (szablonów), czyli STL (od ang. Standard Template Library).

W odróżnieniu od Javy i wielu innych języków, biblioteka standardowa C++ dostarcza przede wszystkim szablonów; konkretyzując te szablony użytkownik tworzy klasy i funkcje operujące na (prawie) dowolnych typach danych. Ważną rolę pełnią w szczególności szablony klas kolekcyjnych, pozwalające tworzyć kolekcje obiektów o różnych własnościach i funkcjonalności. Warto przy tym przyjąć zasadę, że elementy wstawiane do kolekcji są albo typu wbudowanego (w szczególności mogą to być wskaźniki), albo typu obiektowego dla którego to typu istnieje konstruktor domyślny i prawidłowo odbywa się kopiowanie, przypisywanie i porównywanie za pomocą operatora '<'. W razie konieczności należy więc odpowiednio przeciążyć operatory '=' i operator '<' i zdefiniować prawidłowe konstruktory kopiujące i destruktory. Jeśli warunki te nie są spełnione, to mogą, choć nie muszą, pojawić się trudne do zidentyfikowania problemy.

Oczywiście nie cała biblioteka standardowa ma formę wzorców: w poprzednich rozdziałach poznaliśmy, niejako mimochodem, inne składniki tej biblioteki, które szablonami nie są, takie jak udogodnienia dostarczane przez dołączenie plików nagłówkowych cstdlib, cstring, cmath (te akurat składniki biblioteki są odziedziczone z C).

Rozdział niniejszy należy traktować jako wstęp do opisu biblioteki standardowej — więcej szczegółów można znaleźć w książkach cytowanych w spisie literatury .



Podrozdziały

T.R. Werner, 23 lutego 2019; 23:59