C++ bez cholesterolu

Biblioteka standardowa: Wstęp

Wprowadzenie

Biblioteka standardowa C++ jest właściwie jedną z "ostatnich" dopracowanych (no, mniej więcej) części C++. Wszelkie opisane tu właściwości wypada znać i bezwzględnie stosować raczej, niż innych bibliotek o podobnych właściwościach. Nie mówię tego na próżno, bowiem wiele takowych powstało. Powstało też nie bez powodu - w każdym programowaniu potrzeba operować różnymi standardowymi strukturami danych, a jak ich nie było, to każdy deklarował swoje. Dlatego implementacje różnych dynamicznych tablic, list, zbiorów, a także napisów można spotkać w bardzo wielu bibliotekach.

Jedną z ostatnich części biblioteki standardowej jest STL. Jedną z pierwszych, o ile pamiętam, iostream i complex. Po drodze one się jeszcze sporo zmieniały, bo np. complex kiedyś było klasą z polami typu double, a aktualnie jest wzorcem (a tamta postać istnieje jako double_complex). Biblioteki iostream* też przeszły trochę transformacji, m.in. rozdzielono je na ios, iosfwd, istream i ostream, poza tym też zostały zaimplementowane jako wzorce, by umożliwić operowanie na stringu unikodowym. Klasa String z kolei jest też - co może jest nieco dziwne - jedną z późniejszych klas. No i jednymi z ostatnich są te standardowe typy wyjątków.

Jedną z rzeczy, którą ustalono wręcz "w ostatniej chwili" były przestrzenie nazw, w związku z czym utworzono przestrzeń nazw "std", w której znajdują się wszystkie definiowane przez bibliotekę standardową symbole.

Pliki nagłówkowe

Oto pełna lista standardowych plików nagłówkowych C++: <algorithm>, <bitset>, <cassert>, <cctype>, <cerrno>, <cfloat>, <ciso646>, <climits>, <clocale>, <cmath>, <complex>, <csetjmp>, <csignal>, <cstdarg>, <cstddef>, <cstdio>, <cstdlib>, <cstring>, <ctime>, <cwchar>, <cwctype>, <deque>, <exception>, <fstream>, <functional>, <iomanip>, <iosfwd>, <ios>, <iostream>, <istream>, <iterator>, <limits>, <list>, <locale>, <map>, <memory>, <new>, <numeric>, <ostream>, <queue>, <set>, <sstream>, <stack>, <stdexcept>, <streambuf>, <string>, <typeinfo>, <utility>, <valarray>, <vector>.

Omówię teraz po kolei nagłówki względem kategorii.

Operacje wejścia-wyjścia

Operacje wejścia-wyjścia to podstawowe operacje tzw. komunikacji strumieniowej. Należą do tego głównie operacje na plikach i strumieniach standardowych.

Operacje na tekstach

Operacje na tekstach składają się z najróżniejszych operacji na tablicach znaków, implementowanych w różny sposób. Tu wyraźnie rozróżnia się typy tekstowe statyczne, czy też surowe (operujące tablicami surowymi i wskaźnikami) oraz typ string.

Wyjątki

Wyjątki oczywiście mogą być dowolnego typu, ale lepiej jest trzymać się pewnej konwencji hierarchizacji typów wyjątków.