Standard Template Library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 4:
La STL costituisce uno strato software ormai divenuto fondamentale per i programmatori [[C plus plus|C++]]: dà ai programmatori un set precostituito di classi comuni, come containers e array associativi, che possono essere utilizzati con qualsiasi tipo, sia primitivo che definito dall'utente, con il supporto ad alcune operazioni elementari come copia ed assegnamento.
 
La STL raggiunge questo risultato attraverso il massiccio utilizzo dei [[Programmazione generica|template]]s. In pratica lo standard ([[ISO/IEC 14882]]) non richiede alle software houses che sviluppano i [[Compilatori|compilatori]], a differenza delle librerie standard del C e del C++, di generare una libreria con codice oggetto cui linkare i programmi che la utilizzano, ma segue un'altra via: le classi e le funzioni non sono dei "prodotti finiti", ma poco più che degli schemi; al momento dell'istanziamento di un oggetto o funzione template, tramite una sintassi particolare, possono essere specificati dei parametri (ad esempio, il tipo che deve essere contenuto in una struttura dati, o la funzione utilizzata per allocare memoria, etc.) utilizzati di volta in volta dal compilatore per generare in linea il codice finale per quell'oggetto, che quindi verrà in un secondo momento convertito in codice oggetto (binario). Questo tipo di approccio è molto potente, anchee se ilgenera codice generatomolto risultaefficiente, anche se molto complicatocomplesso, taletanto da costituire talvolta un problema per molti [[Compilatore|compilatori]], ai quali può succedere di fallire la compilazione di costrutti validi, di produrre codice non valido, o richiedere al programmatore sforzi ulteriori (non richiesti, in teoria, dallo standard) per ottenere il risultato voluto.
Ciò accade per il particolare approccio alla programmazione generica che è stato seguito nell'implementazione della libreria, quello dei templates; in pratica lo standard non richiede, a differenza delle librerie standard del C e del C++, di generare una libreria con codice oggetto cui linkare i programmi che la utilizzano, ma segue un'altra via: le classi e le funzioni non sono dei "prodotti finiti", ma poco più che degli schemi; al momento dell'istanziamento di un oggetto o funzione template, tramite una sintassi particolare, possono essere specificati dei parametri (ad esempio, il tipo che deve essere contenuto in una struttura dati, o la funzione utilizzata per allocare memoria, etc.) utilizzati di volta in volta dal compilatore per generare in linea il codice finale per quell'oggetto, che quindi verrà in un secondo momento convertito in codice oggetto.
 
''La C++ Standard Library'' è definita dallo standard [[ISO/IEC 14882]].
 
La Standard Template Library è stata la prima libreria a contenere algoritmi e strutture dati generici, seguendo quattro concetti base: programmazione generica, astrattezza senza perdita di efficienza, il [[Architettura di von Neumann|modello computazionale di Von Neumann]], and value semantics.