Standard Template Library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 2:
 
==Descrizione==
La STL costituisce uno strato software ormai divenuto fondamentale per i programmatori [[C plus plus|C++]]:, cui ai programmatorifornisce 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 e genera codice moltopiù efficiente di quello ottenuto attraverso il meccanismo dell'ereditarietà, anche se molto complesso, tanto da costituirecreare talvolta un problemaproblemi pera molti 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.
 
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.