Condividi tramite


Collezioni

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

Operazione da eseguire

Attività Collection-Class generali

Template-Based Collection-Class Attività

Accesso ai membri di una raccolta (Template-Based o No)

Vedere anche

Concetti
Argomenti generali su MFC