STL - efektywne wykorzystanie biblioteki standardowej C++

Zakres szkolenia

Szkolenie przeznaczone dla programistów chcących poznać optymalne wykorzystanie biblioteki STL. W trakcie szkolenia dokładnie omawiane są komponenty biblioteki STL, takie jak kontenery, iteratory oraz algorytmy. Szczególny nacisk położony jest na efektywne wykorzystanie w algorytmach standardowych obiektów funkcyjnych tworzonych w postaci klas użytkownika lub z wykorzystaniem wyrażeń lambda (C++11).


Plan szkolenia

Wprowadzenie do STL

  • Składniki biblioteki STL
  • Kontenery, iteratory i algorytmy - omówienie
  • Semantyka wartości i semantyka przenoszenia w kontenerach
  • Operacje przenoszenia w kontenerach standardowych (C++11)
    • emplace(), emplace_back()
  • Obsługa błędów i wyjątków wewnątrz biblioteki STL

Kontenery sekwencyjne

  • Wektory - klasa std::vector
  • Kolejki o dwóch końcach - std::deque
  • Listy - std::list

Kontenery asocjacyjne

  • Zbiory - std::set i std::multiset
  • Mapy - std::map i std::multimap
  • Kontenery asocjacyjne z haszowaniem - std::unorderedset i std::unorderedmap
  • Obliczanie wartości skrótów hash dla obiektów

Adaptatory kontenerów

  • Stos - std::stack
  • Kolejka - std::queue
  • Kolejka priorytetowa - std::priority_queue

Iteratory

  • Kategorie iteratorów STL
  • Funkcje pomocnicze dla iteratorów
  • Adaptatory iteratorów
    • iteratory wstawiające
    • iteratory strumieniowe
    • iteratory odwrotne
    • iteratory przenoszące

Algorytmy standardowe

  • Zakresy w algorytmach i kontenerach
  • Argumenty algorytmów - zakresy, iteratory, predykaty i komparatory

Obiekty funkcyjne w algorytmach STL

  • Obiekty funkcyjne definiowane przez użytkownika
  • Wyrażenia lambda i obiekty domknięć
  • Predefiniowane obiekty funkcyjne
  • Adaptory funkcji, metod oraz obiektów funkcyjnych
  • Lambdy wyższego rzędu

Algorytmy STL

  • Algorytm for_each()
  • Algorytmy niemodyfikujące - zliczanie, wartości minimalna i maksymalna, wyszukiwanie elementów
  • Algorytmy modyfikujące - kopiowanie, przekształcanie i zastępowanie elementów
  • Algorytmy usuwające
  • Algorytmy mutujące
  • Algorytmy sortujące
  • Algorytmy przeznaczone dla zakresów posortowanych
  • Algorytmy numeryczne

Rozszerzenie standardu C++

  • Biblioteka Boost.Container
  • Biblioteka Boost.Iterator
  • Biblioteka Range (C++17)

3 dni po 8 godzin lekcyjnych