Vai al contenuto
Modulo 5

STL e Algoritmi

Padroneggia la Standard Template Library — contenitori, iteratori, algoritmi, range e programmazione funzionale.

Contenitori

  1. Contenitori sequenziali: vector, deque, list, array

    Esplora i contenitori sequenziali della STL — vector, deque, list, forward_list e array. Scopri i compromessi prestazionali, i layout di memoria e le regole di invalidazione degli iteratori.

  2. Contenitori associativi: map, set, unordered_map

    Scopri i contenitori associativi ordinati e non ordinati — map, set e le loro varianti multi- e unordered. Comprendi quando scegliere alberi vs tabelle hash.

  3. Adattatori di contenitori e contenitori speciali

    Scopri stack, queue, priority_queue e i moderni tipi vocabolario come span, string_view e optional. Comprendi quando gli adattatori semplificano il tuo codice.

Iteratori e Algoritmi

  1. Iteratori: il collante della STL

    Comprendi le categorie di iteratori, dagli iteratori di input a quelli contigui. Scopri l'aritmetica degli iteratori, la convenzione begin/end e come gli iteratori connettono i contenitori agli algoritmi.

  2. Algoritmi STL: la potenza di <algorithm>

    Padroneggia gli algoritmi STL più importanti — dalla ricerca e l'ordinamento alla trasformazione e all'accumulazione. Scopri come gli algoritmi si compongono con gli iteratori per un codice espressivo ed efficiente.

  3. Lambda e programmazione funzionale

    Padroneggia le lambda in C++ — liste di cattura, lambda mutabili, lambda generiche e il loro uso come predicati per gli algoritmi. Scopri std::function, std::invoke e il pattern IIFE.

Range e viste (C++20)

  1. Range C++20: un nuovo paradigma

    Scopri i range C++20 — una riprogettazione moderna dell'interfaccia degli algoritmi STL. Impara i concept dei range, gli algoritmi basati su range, le proiezioni e l'operatore pipe per trasformazioni dati componibili.

  2. Viste, valutazione lazy e composizione

    Padroneggia le viste C++20 — adattatori di range leggeri e lazy che si compongono con l'operatore pipe. Scopri filter, transform, take, drop, split, join, iota e come costruire potenti pipeline di dati senza allocazioni intermedie.