Standard Template Library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Thijs!bot (discussione | contributi)
m robot Aggiungo: nl:STL, sv:STL
Wiso (discussione | contributi)
Nessun oggetto della modifica
Riga 3:
==Descrizione==
La STL costituisce uno strato software ormai divenuto fondamentale per i programmatori [[C++]], cui fornisce un set precostituito di [[classe (informatica)|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 [[design by contract|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 [[container (informatica)|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''.
 
{| class="wikitable" style="margin: 1em auto 1em auto"
!Contenitore || Descrizione
|-
! colspan="2"| sequenziali
|-
|'''[[vector (STL)|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 [[coda|queue]]'')
|un vector con le operazioni di inserimente e cancellazione all'inizio o alla fine amortizzate in tempo costante.
|-
! colspan="2"| 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 (C++ container)|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'''<br/>
'''hash_multiset'''<br/>
'''hash_map'''<br/>
'''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 <code>__gnu_cxx</code>. 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.
 
[[Categoria:Programmazione]]