Standard Template Library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 2:
 
== Descrizione ==
La Standard Template Library costituisce uno strato software ormai divenuto fondamentale per i programmatori [[C++]], cui fornisce un set precostituito di [[classe (informatica)|classi]] comuni, come, containerad eesempio, la classe [[arraystring(informatica)|string]] associativi, che hanno la caratteristica di poter operare con qualsiasi tipo di datoiteratori, siacioè primitivouna chegeneralizzazione definitodei dall'utente,[[Puntatore richiedendo(programmazione)|puntatori]] alloe oltre sviluppatore70 nelpotenti [[design by contractalgoritmo|contrattoalgoritmi]] per lavorare su tali strutture.
 
==Storia==
Le STL (Standard Template Library) sono state progettate e sviluppate presso la [[Hewlett-Packard]] da Alexander Stepanov e Meng Lee e cono state incluse nello standard ANSI/ISO nel 1995.
 
== Contenuti ==
=== Contenitori ===
I [[container (informatica)|contenitori]] della STL sonosi dividono in 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 che non implementano iteratori nella loro interfaccia.
I contenitori standard sequenziali includono ''vector'' e, ''list'' cone ''deque'',. E comprendono gli adattatori ''queue'', ''priority_queue'' e ''stack'' come adattatori. I contenitori associativi sono ''set'', ''multiset'', ''map'' e ''multimap''.
 
{| class="wikitable" style="margin: 1em auto 1em auto"
!Contenitore || Descrizione
|-
! colspan="2"| sequenzialiSequenziali
|-
|'''[[vector (STL)|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. Gli elementi sono memorizzati su una porzione di memoria continua. L'inserimento e la rimozione degli elementi nel/dal vector '''in coda''' viene effettuato in tempo costante (O(1)). L'inserimento e la rimozione all'inizio o nel centro èe compiutola ricerca vengono effettuate in tempo lineare (O(n)).
|-
|'''[[list (STL)|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 (O(n)) così come la ricerca, tuttavia le operazioni di inserimento e cancellazione vengono effettuate in tempo costante (O(1)).
|-
! colspan="2"| associativiAssociativi
|-
|'''[[set (STL)|set]]'''
|un insieme ordinato che non consente duplicati; 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'''
Line 29 ⟶ 32:
|-
|'''[[map (STL)|map]]'''
|un array associativo ordinato rispetto alla chiave; consente la mappatura di un dato (chiave) eassociato ad un altro (valore). Entrambi i tipi di dato possono essere definiti dall'utente. Permette ricerche rapide rispetto alla chiave, l'accesso ai dati ha tempo logaritmico(O(log n)). Non consente di assegnare più chiavi ad un singolo valore.
|-
|'''multimap'''
|come per la mappamap, ma consente la presenza di chiavi duplicate.
|-
|'''hash_set'''<br />
Line 42 ⟶ 45:
 
=== Algoritmi ===
Nella STL sono inclusi numerosi algoritmi per eseguire operazioni come la ricerca e l'ordinamento.tali algoritmi sono comunemente utilizzati per la manipolazione dei container in maniera indiretta, cioè solo tramite [[iteratore|iteratori]]. Molti di questi algoritmi operano su un intervallo del container definito dall'utente tramite due iteratori che indicano gli estremi dell'intervallo.
Numerosi algoritmi per eseguire operazioni come la ricerca e l'ordinamento sono forniti con la STL.
 
[[Categoria:Librerie software]]