Contenitori STL
La (STL) libreria STL (standard template library) fornisce diversi contenitori per archiviare le raccolte di oggetti correlati.I contenitori sono tutte le classi modello, consentendo di specificare quali oggetti sono consentiti nei contenitori.In questo argomento vengono forniti cenni preliminari sui contenitori STL per individuare il contenitore è ottimale per esigenze.
Esistono due raccolte STL tra cui scegliere: nativo STL e STL/CLR.per ulteriori informazioni su STL/CLR, vedere Riferimenti alla libreria STL/CLR.
I contenitori in STL possono essere suddivisi in tre categorie, i contenitori di sequenza, i contenitori associativi e gli adattatori del contenitore.Queste categorie e raccolte che appartengono a ogni categoria, sono riepilogate di seguito.Per informazioni più dettagliate viene trovata nella documentazione di riferimento per i contenitori.
contenitori di sequenza
I contenitori di sequenza mantiene l'ordine originale di elementi inseriti.Ciò consente di specificare dove inserire l'elemento nel contenitore.
deque (il contenitore della coda a due estremità) consente gli inserimenti ed eliminazioni veloci inizio e alla fine del contenitore.È anche possibile accedere in modo casuale rapidamente un elemento.
list il contenitore consente gli inserimenti ed eliminazioni veloci in un punto qualsiasi del contenitore, ma non è possibile accedere a casualmente un elemento nel contenitore.
vector il contenitore si comporta come una matrice, ma automaticamente si amplierà come richiesto.
Per ulteriori informazioni sui contenitori di sequenza, consultare la tabella seguente:
Contenitore |
nativo STL |
STL/CLR |
---|---|---|
deque |
||
list |
||
vector |
contenitori associativi
La caratteristica distintiva dei contenitori associativi consiste nel fatto che gli elementi vengono inseriti in un ordine predefinito, come ascensione ordinata.
I contenitori associativi possono essere raggruppate in due sottoinsiemi: mapping e set.In map, talvolta denominata dizionario, è costituito da una coppia chiave/valore.La chiave viene utilizzata per ordinare la sequenza e il valore è piuttosto associato a tale chiave.Ad esempio, a map potrebbe contenere le chiavi rappresentare ogni parola univoco in un testo e i valori che rappresentano il numero di volte in cui la parola viene visualizzata nel testo.In set è semplicemente un ordine crescente contenitore di elementi univoci.
entrambi map e set consentire una sola istanza di una chiave o un elemento da inserire nel contenitore.Se più istanze di elementi sono obbligatorie, utilizzare multimap o multiset.
Sia mapping degli iteratori bidirezionali che supportano di set.per ulteriori informazioni sugli iteratori, vedere Iteratori.
Mentre non ufficialmente parte standard della libreria STL, hash_map e hash_set essere utilizzate comunemente migliorare i tempi di ricerca.Questi contenitori archiviano gli elementi come tabella hash, con ogni voce della tabella contenente un elenco collegato bidirezionale degli elementi.Per garantire tempi trovati più veloci, assicurarsi che algoritmo hash per gli elementi restituisca i valori hash agevolmente distribuiti.
Per ulteriori informazioni sui contenitori associativi, consultare la tabella seguente:
Contenitore |
nativo STL |
STL/CLR |
---|---|---|
hash_map |
||
hash_multimap |
||
hash_multiset |
||
hash_set |
||
map |
||
multimap |
||
multiset |
||
set |
Adattatori del contenitore
Gli adattatori del contenitore vengono semplicemente variazioni di contenitori sopra.Gli adattatori del contenitore non supportano gli iteratori.
priority_queue il contenitore ha organizzato in modo che l'elemento con il valore massimo è sempre primo della coda.
queue il contenitore segue la semantica FIFO (innanzitutto in, innanzitutto out).Il primo elemento inserito (premuto) nella coda è il primo da rimuovere (estratto).
stack il contenitore segue la semantica LIFO (l'ultimo in, innanzitutto out).L'ultimo elemento da inserire (premuto) nello stack è il primo elemento da rimuovere (estratto).
Poiché gli adattatori del contenitore non supportano gli iteratori, non possono essere utilizzati con gli algoritmi STL.per ulteriori informazioni sugli algoritmi, vedere Algoritmi.
Per ulteriori informazioni sugli adattatori del contenitore, consultare la tabella seguente:
Contenitore |
nativo STL |
STL/CLR |
---|---|---|
priority_queue |
||
queue |
||
stack |
Requisiti per gli elementi contenitore
Gli elementi inseriti in un contenitore STL possono essere di qualsiasi tipo di oggetto che fornisce un costruttore di copia pubblico, un distruttore pubblico e un operatore di assegnazione pubblico.il distruttore non può generare un'eccezione.Inoltre, contenitori associativi come set e map deve avere un operatore di confronto pubblico definito, che è operator< per impostazione predefinita.Alcune operazioni sui contenitori possono inoltre essere necessario un costruttore predefinito pubblico e un operatore equivalente pubblico.
Accedere agli elementi contenitore
Gli elementi dei contenitori si accede utilizzando gli iteratori.Per ulteriori informazioni, vedere Iteratori.
[!NOTA]
È inoltre possibile utilizzare per ognuna di esse, in per scorrere le raccolte STL.Per ulteriori informazioni, vedere Procedura: Scorrere la libreria STL con per ciascuno.