5. Typy złożone

Część z typów złożone w C++ możemy traktować jako kontenery na inne elementy (w tym typy proste) - i takim podejściem się teraz zajmiemy. Zanim przejdziemy do opisów detalicznych poszczególnych typów złożonych - poznajmy ogólne zasady operowania kontenerami w C++. Co to jest takiego kontener? Jest to po prostu taki obiekt, który może w sobie zawierać inne obiekty. Zasady posługiwania się kontenerami w C++ (ogólne) są następujące:

  • Każdy kontener może zawierać w sobie jakieś elementy (może być również pusty, choć nie każdy - puste tablice nie są dozwolone przez standard).
  • Do każdego elementu umieszczonego w kontenerze możemy się dobrać poprzez specjalną wartość, zwaną iteratorem. Wartość ta pozwala nam na poruszanie się po kontenerze.
  • Każdy kontener ma zdefiniowane odpowiednie wartości dla iteratorów stanowiące jego początek i koniec.
  • Na iteratorze zawsze można wykonać operację pobrania następnego elementu (iterator typu forward).
  • Dla niektórych typów kontenerów istnieje również możliwość pobrania poprzedniego elementu (iterator reverse) lub też możliwości przejścia na dowolny element w jednym kroku (iterator typu free-access).

W C++ istnieją różne rodzaje kontenerów - większość z nich jest dostępna jako klasy biblioteki standardowych. Jedynym „wbudowanym” (rdzennym) typem jest w C++ tablica – gdzie iteratorem jest wskaźnik, i jest to iterator o swobodnym dostępie. Tablice zostaną omówione teraz, pozostałe kontenery w dalszej części podręcznika.