Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Microsoft Foundation Class Library fornisce classi di raccolta per gestire gruppi di oggetti. Queste classi sono di due tipi:
Annotazioni
Se il codice usa già classi di raccolta non personalizzate, è possibile continuare a usarle. Se si scrivono nuove classi di raccolta sicure per tipi per i propri tipi di dati, è consigliabile usare le classi basate su template più recenti.
Forme della raccolta
Una classe di raccolta è caratterizzata dalla sua "forma" e dai tipi dei relativi elementi. La forma fa riferimento al modo in cui gli oggetti sono organizzati e archiviati dall'insieme. MFC fornisce tre forme di raccolta di base: elenchi, matrici e mappe (noti anche come dizionari). È possibile scegliere la forma della raccolta più adatta al problema di programmazione specifico.
Ognuna delle tre forme di raccolta fornite viene descritta brevemente più avanti in questo argomento. Per confrontare le caratteristiche delle forme per decidere quale sia la soluzione migliore per il programma, vedere Consigli per la scelta di una classe di raccolta.
Elenco
La classe lista fornisce una lista ordinata, non indicizzata di elementi, implementata come lista doppiamente collegata. Un elenco ha una "testa" e una "coda" e l'aggiunta o la rimozione di elementi dalla testa o dalla coda, o l'inserimento o l'eliminazione di elementi al centro, è molto veloce.
Array
La classe matrice fornisce una matrice di oggetti con dimensioni dinamiche, ordinate e con indicizzazione integer.
Mappa (nota anche come dizionario)
Una mappa è una raccolta che associa un oggetto chiave a un oggetto valore.
Classi della raccolta Template-Based
Il modo più semplice per implementare una raccolta indipendente dai tipi che contiene oggetti di qualsiasi tipo consiste nell'usare una delle classi basate su modelli MFC. Per esempi di queste classi, vedere l'esempio MFC COLLECT.
Nella tabella seguente sono elencate le classi di raccolta basate su modelli MFC.
Classi template di collezione
| Contenuto della raccolta | Matrici | Elenchi | Mappe |
|---|---|---|---|
| Raccolte di oggetti di qualsiasi tipo | CArray |
CList |
CMap |
| Raccolte di puntatori verso oggetti di qualsiasi tipo | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Classi di raccolta non basate sui modelli
Se l'applicazione usa già classi non MFC nontemplate, è possibile continuare a usarle. Tuttavia, per le nuove raccolte, è consigliabile usare le classi basate su modello. Nella tabella seguente sono elencate le classi di raccolta MFC non basate sui modelli.
Classi di raccolta non basate su template
| Matrici | Elenchi | Mappe |
|---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
La tabella Caratteristiche delle classi di raccolta MFC in Recommendations for Choosing a Collection Class descrive le classi di raccolta MFC in termini di queste caratteristiche (diverse dalla forma):
Indica se la classe usa modelli C++
Indica se gli elementi archiviati nella raccolta possono essere serializzati
Indica se è possibile eseguire il dump degli elementi archiviati nella raccolta per la diagnostica
Indica se la raccolta è sicura per i tipi