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). Iostreamy 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. 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>      <cstdarg>      <ios>          <ostream>   
<bitset>         <cstddef>      <iosfwd>       <queue>     
<cassert>        <cstdio>       <iostream>     <set>       
<cctype>         <cstdlib>      <istream>      <sstream>   
<cerrno>         <cstring>      <iterator>     <stack>     
<cfloat>         <ctime>        <limits>       <stdexcept> 
<ciso646>        <cwchar>       <list>         <streambuf> 
<climits>        <cwctype>      <locale>       <string>    
<clocale>        <deque>        <map>          <typeinfo>  
<cmath>          <exception>    <memory>       <utility>   
<complex>        <fstream>      <new>          <valarray>  
<csetjmp>        <functional>   <numeric>      <vector>    
<csignal>        <iomanip>         
 

Kategorie

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

  1. 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.

  2. 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.
  3. Wyjątki

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