Raccolte
La libreria MFC fornisce classi Collection per la gestione di gruppi di oggetti. Queste classi sono di due tipi:
Nota
Se nel codice vengono già utilizzate le classi Collection non create da modelli, è possibile continuare a utilizzarle. Se si scrivono nuove classi di raccolta indipendenti dai tipi per i tipi di dati personalizzati, si consiglia di utilizzare le classi basate su modelli, che sono più recenti.
Forme della raccolta
Una classe di raccolta è caratterizzata dalla "forma" e dai tipi dei relativi elementi. La forma fa riferimento al modo in cui gli oggetti sono organizzati e archiviati dalla raccolta. MFC offre tre forme base di raccolta: elenchi, matrici e mappe (denominate anche dizionari). È possibile selezionare la forma di raccolta più appropriata al problema di programmazione specifico.
Più avanti in questo argomento viene descritta brevemente ciascuna delle forme di raccolta fornite. Per confrontare le caratteristiche delle forme che consentono di decidere quale sia la scelta migliore per il programma, vedere Consigli scelta di una classe di raccolta.
List
La classe elenco fornisce un elenco di elementi ordinato e non indicizzato, implementato come elenco a doppio collegamento. Un elenco ha un inizio e una fine e aggiungere o rimuovere elementi dall'inizio o dalla fine o inserire o eliminare elementi al centro è molto veloce.
Matrice
La classe array fornisce una matrice di oggetti dinamicamente ridimensionata, ordinata e indicizzata per interi.
Mappa (denominata anche dizionario)
Una mappa è una raccolta che associa un oggetto chiave a un oggetto valore.
Classi di raccolta basate su modello
Il modo più semplice per implementare una raccolta indipendente dai tipi che contiene oggetti di qualsiasi tipo consiste nell'utilizzare una delle classi MFC basate su modelli. Per esempi di queste classi, vedere l'esempio MFC COLLECT.
Nella tabella seguente vengono elencate le classi Collection MFC basate su modelli.
Classi modello di raccolta
Contenuto della raccolta | Matrici | Elenchi | Mappe |
---|---|---|---|
Raccolte di oggetti di qualsiasi tipo | CArray |
CList |
CMap |
Raccolte di puntatori a oggetti di qualsiasi tipo | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Classi di raccolta non basate sui modelli
Se nell'applicazione vengono utilizzate già le classi di raccolta MFC non create da modelli, è possibile continuare a utilizzarle. Tuttavia, per le nuove raccolte, si consiglia di utilizzare le classi basate su modelli. Nella tabella seguente sono elencate le classi Collection MFC che non sono basate su modelli.
Classi Collection non basate su modelli
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 Consigli per La scelta di una classe di raccolta descrive le classi di raccolta MFC in termini di queste caratteristiche (diverse dalla forma):
Se la classe utilizza modelli C++
Se gli elementi archiviati nella raccolta possono essere serializzati
Se per gli elementi archiviati nella raccolta è possibile eseguire il dump per la diagnostica
Se la raccolta è indipendente dai tipi