Standard Template Library

libreria software di C++

La Standard Template Library (STL) è una libreria software inclusa nella libreria standard del linguaggio C++ e definisce strutture dati generiche, Iteratori e algoritmi generici.

Descrizione

La STL costituisce uno strato software ormai divenuto fondamentale per i programmatori C++, cui fornisce un set precostituito di classi comuni, come container e array associativi, che hanno la caratteristica di poter operare con qualsiasi tipo di dato, sia primitivo che definito dall'utente, richiedendo allo sviluppatore nel contratto il rispetto di pochi vincoli (ad esempio, l'implementazione di operatori o funzioni di assegnamento o confronto) offrendogli in cambio classi complete di tutte le funzioni e operazioni elementari (ad es. in un container, copia, assegnamento, inserimento/rimozione, iterazione tra gli elementi) e pronte all'uso.

Contenuti

Contenitori

I contenitori della STL sono sequenziali e associativi. I contenitori standard sequenziali includono vector, deque, e list. I contenitori associativi sono set, muliset, map e multimap.

Contenitore Descrizione
sequenziali
vector un array dinamico, simile all'array del C (per esempio, capace di accesso casuale) con la capacità di ridimensionarsi automaticamente a cause dell'inserimento di nuovi oggetti o della cancellazione. L'inserimento e la rimozione degli elemeti nel/dal vector in coda usa un tempo costante amortizzato. L'inserimento e la rimozione all'inzio o nel centro è compiuto in tempo lineare.
list una lista bidirezionale; gli elementi non sono memorizzati in una memoria continua. Le caratteristiche sono l'opposto di quelle del vector. Lento accesso (tempo lineare), ma veloce inserimento e cancellazione (tempo costante).
deque (double ended queue) un vector con le operazioni di inserimente e cancellazione all'inizio o alla fine amortizzate in tempo costante.
associativi
set un insieme ordinato; l'inserimento e la cancellazione degli elementi in un insieme non invalida il puntamento degli iteratori nell'insieme. Le operazioni sono l'unione, intersezione, differenza, differenza simmetrica e il test di inclusione.
multiset come per il set, ma consente la presenza di elementi duplicati.
map un array associativo ordinato; consente la mappatura di un dato (chiave) e un'altro (valore).
multimap come per la mappa, ma consente la presenza di chiavi duplicate.
hash_set

hash_multiset
hash_map
hash_multimap

simili al set, multiset, map o multimap, rispettivamente, ma implementati usando una tabella hash; le chiavi non sono ordinate, ma una funzione hash deve esistere per ogni tipo di chiave. Questi contenitori non fanno parte della Libreria Standard C++, ma sono inclusi nella estensione SGI della STL, e sono comunemente incluse come per esempio nella libreria del GNU C++, nel namespace __gnu_cxx. Potrebbero esssere incluse nelle estensioni future dello standard C++.

Algoritmi

Numerosi algoritmi per eseguire operazioni come la ricerca e l'ordinamento sono forniti con la STL.