Tematyka

    • Autor modułu: Paweł Wnuk (pawel.wnuk@pw.edu.pl)

      Na początku tego modułu zamieszczono opis możliwości podstawowych elementów biblioteki STL, prezentując kluczowe narzędzie, które ułatwia programistom pracę z zaawansowanymi strukturami danych i algorytmami. STL to zestaw gotowych szablonów klas i funkcji, które znacznie ułatwiają pisanie efektywnego i modularnego kodu. Omówiono główne komponenty STL, takie jak kontenery (np. vector, list, map), algorytmy (np. sortowanie, wyszukiwanie, transformacja) oraz iteratory, które umożliwiają efektywne przetwarzanie danych w kontenerach. Student zdobywa wgląd w zastosowanie różnych kontenerów w zależności od potrzeb i specyfiki problemu, co przyczynia się do zwiększenia elastyczności kodu. Pokazano także funktory, predykaty oraz alokatory, wprowadzając czytelnika w bardziej zaawansowane koncepcje programowania z wykorzystaniem STL. Podkreśla się, że STL stanowi istotny element standardu C++, umożliwiając programistom korzystanie z gotowych, zoptymalizowanych rozwiązań, co przyspiesza proces tworzenia oprogramowania.W module oraz wprowadzono również zagadnienia obsługi błędów. Na koniec zaprezentowano kilka przykładowych projektów – aplikację wielowątkową, obsługę pluginów / dynamicznego rozszerzania aplikacji, programowanie obsługi gniazd sieciowych.

      Słowa kluczowe: STL, vector, deque, list, map, wielowątkowość, fabryka abstrakcyjna, wtyczki, zastosowania sieciowe.



    • Moduł czwarty skupia się na dwóch zaawansowanych i bardzo praktycznych aspektach języka C++: Standardowej Bibliotece Szablonów (STL) oraz programowaniu współbieżnym. W pierwszej części szczegółowo omówione zostały różne rodzaje kontenerów – zarówno sekwencyjne (vector, list, deque), jak i asocjacyjne (map, set, unordered_map i inne). Przedstawiono sposób ich tworzenia, inicjalizacji, modyfikacji oraz typowe zastosowania. Duży nacisk położono na właściwe zarządzanie pamięcią i świadome wybory konstrukcji – np. wybór odpowiedniego kontenera pod kątem wydajności lub semantyki danych.

      Druga część modułu wprowadza zagadnienia związane ze współbieżnością, które zyskały duże znaczenie w nowoczesnym C++. Pokazano, jak tworzyć i uruchamiać wątki za pomocą std::thread, jak przekazywać do nich dane, synchronizować dostęp do zasobów z użyciem mutexów (std::mutex, std::lock_guard, std::unique_lock) i jak korzystać z typów atomowych (std::atomic) do bezpiecznej komunikacji między wątkami. Wiedza ta ma kluczowe znaczenie dla tworzenia responsywnych i skalowalnych aplikacji, które efektywnie wykorzystują zasoby systemowe.

      Co powinniśmy zapamiętać:

      • Kontenery STL pozwalają efektywnie przechowywać i przetwarzać dane – należy dobrać je świadomie do potrzeb programu.
      • Iteratory umożliwiają uniwersalny dostęp do danych w kontenerach – działają jak wskaźniki.
      • Asocjacyjne kontenery (map, set) przechowują dane w sposób uporządkowany lub oparty na haszowaniu.
      • Wątki w C++ (std::thread) pozwalają na wykonywanie zadań równolegle – ważne jest poprawne zarządzanie dostępem do współdzielonych danych.
      • Mutexy i operacje atomowe są kluczowe dla bezpieczeństwa danych w programach wielowątkowych – eliminują ryzyko warunków wyścigu.
      • Znajomość standardowych idiomów i struktur STL oraz podstaw synchronizacji to niezbędne kompetencje w nowoczesnym programowaniu systemowym i aplikacyjnym.