Wykład 7-8
Biblioteka standardowych szablonów (STL)
Programowanie obiektowe
1
Biblioteka standardowych szablonów
Biblioteka standardowych szablonów STL (Standard Template Library)
stanowi jedno z najwa\niejszych rozszerzeń języka C++ w ostatnich latach
Biblioteka ta zawiera szablony klas ogólnego przeznaczenia oraz funkcje
implementujące, dotyczące np. obsługi wektorów, list, kolejek i stosów
Programowanie obiektowe
2
Wprowadzenie do STL - Terminologia
Kontenery obiekty STL przeznaczone do przechowywania innych
obiektów (danych), zwykle tego samego typu; istnieje kilka rodzajów
kontenerów;
Ka\da klasa kontenera posiada definicje operujących na nim funkcji
Algorytmy operują na kontenerach; umo\liwiają manipulowanie ich
zawartością; biblioteka STL zawiera ponad 70 ró\nych algorytmów;
Iteratory obiekty pełniące rolę podobną do wskazników; umo\liwiają
poruszanie się po zawartości kontenera w podobny sposób, w jaki wskazniki
pozwalają przemieszczać się w obrębie tablicy;
Alokatory są definiowane dla ka\dego kontenera; umo\liwiają
zarządzanie pamięcią przydzieloną dla kontenera; domyślny alokator to
obiekt klasy allocator; programista mo\e zdefiniować własny alokator;
Programowanie obiektowe
3
Wprowadzenie do STL - Terminologia
Predykaty funkcje (jednoargumentowe, oznaczane jako UnPred lub
dwuargumentowe, oznaczane jako BinPred ), zwracające wartość logiczną
(prawda lub fałsz)
Obiekty funkcyjne szablony zdefiniowane w klasie functional; obiekty
funkcyjne mogą być stosowane w algorytmach STL;
przykłady obiektów funkcyjnych: less, less_equal, greater, greater_qual,
logical_and, logical_or, logical_not
Programowanie obiektowe
4
Wprowadzenie do STL
Rodzaje iteratorów:
Dostęp swobodny (RandIter) mo\liwe składowanie i pobieranie wartości;
swobodny dostęp do elementów kontenera;
Dostęp dwukierunkowy (BiIter) mo\liwe składowanie i pobieranie
wartości; poruszanie się w przód i w tył;
Dostęp jednokierunkowy (ForIter) mo\liwe składowanie i pobieranie
wartości; poruszanie się tylko do przodu;
Wejście (InIter), Wyjście (OutIter) - mo\liwe składowanie wartości, ale bez
mo\liwości pobierania; poruszanie się tylko do przodu;
Programowanie obiektowe
5
Wprowadzenie do STL
Klasy kontenerów:
bitset zbiór bitów; wymagany nagłówek
deque kolejka dwukierunkowa; wymagany nagłówek
list lista liniowa; wymagany nagłówek
map zbiór par (klucz, wartość), w których klucz jest związany tylko z jedna
wartością; wymagany nagłówek