Standard Template Library
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 Standard Template Library 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
Contenuti
Contenitori
I contenitori della STL sono sequenziali e associativi. A loro volta, una parte dei contenitori sequenziali può essere definita come adattatori, in quanto sono in effetti delle interfacce ridotte e specializzate dei contenitori principali. I contenitori standard sequenziali includono vector e list con deque, queue, priority_queue e stack come adattatori. I contenitori associativi sono set, multiset, 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 causa dell'inserimento o della cancellazione di elementi. L'inserimento e la rimozione degli elementi nel/dal vector in coda viene effettuato in tempo costante. L'inserimento e la rimozione all'inizio o nel centro è compiuto in tempo lineare. |
list | una lista bidirezionale; gli elementi non sono memorizzati in una memoria continua. Per questo motivo non è possibile accedere direttamente ad un elemento della lista accesso casuale, ma è necessario farlo tramite l'utilizzo di un iteratore. L'accesso agli elementi viene quindi effettuato con tempo lineare, tuttavia le operazioni di inserimento e cancellazione vengono effettuate 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 |
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 o nel namespace std_ext di Visual Studio. Potrebbero essere incluse nelle estensioni future dello standard C++.
|
Algoritmi
Numerosi algoritmi per eseguire operazioni come la ricerca e l'ordinamento sono forniti con la STL.