Condividi tramite


Raccolte

La libreria MFC fornisce classi di raccolte per gestire gruppi di oggetti. Queste classi sono di due tipi:

  • Classi di raccolte create dai modelli C++

  • Classi di raccolte non create dai modelli C++

Nota

Se il codice utilizza già le classi di raccolte non create da modelli, è possibile continuare a utilizzarle.Se si scrivono nuove classi di raccolte indipendenti dai tipi per i tipi di dati personalizzati, è consigliabile utilizzare le più recenti classi basate su modelli.

Forme delle Raccolte

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 fornisce tre forme base di raccolta: elenchi, matrici e mappe (denominate anche dizionari). È possibile selezionare la forma di raccolta più appropriata al problema specifico di programmazione.

Ciascuna delle forme di raccolta fornite è descritta brevemente più avanti in questo argomento. Per confrontare le funzionalità delle forme utili per decidere quale è ottimale per il programma, vedere Suggerimenti per la scelta di una classe di raccolte.

  • Elenco

    La classe di elenco fornisce un elenco di elementi ordinato e non indicizzato, implementato come elenchi collegati doppiamente. Un elenco ha "una testa" e "un elemento di coda," e l'aggiunta o la rimozione di elementi dalla testa o viceversa, o inserire o eliminare elementi al centro, è molto veloce.

  • Matrice

    La classe array fornisce un array di oggetti ridimensionato dinamicamente, ordinata e indicizzata per interi.

  • Mappa (denominata anche dizionario)

    Una mappa è una raccolta che associa un oggetto chiave con un oggetto valore.

Classi di Raccolte basate su modello

Il modo più semplice per implementare una raccolta indipendente dai tipi che contiene oggetti di qualsiasi tipo è utilizzare una delle classi MFC basate su modelli. Per esempi di queste classi, vedere l'esempio COLLECT MFC.

Nella tabella seguente vengono elencate le classi di raccolta MFC basate su modelli.

Classi Modello di Raccolta

Contenuto della Raccolta

Matrici

Elenchi

Mappe

Insiemi di oggetti di qualsiasi tipo.

CArray

CList

CMap

Raccolte di puntatori a oggetti di qualsiasi tipo

CTypedPtrArray

CTypedPtrList

CTypedPtrMap

Le Classi di Raccolta non basate su modelli

Se l'applicazione utilizza già le classi di raccolta MFC non create da modelli, è possibile continuare a utilizzarle. Tuttavia, per le nuove raccolte, è consigliabile utilizzare le classi basate su modelli. Nella tabella seguente sono elencate le classi di raccolta MFC che non sono basate su modelli.

Classi di Raccolta non basate su modelli

Matrici

Elenchi

Mappe

CObArray

CObList

CMapPtrToWord

CByteArray

CPtrList

CMapPtrToPtr

CDWordArray

CStringList

CMapStringToOb

CPtrArray

 

CMapStringToPtr

CStringArray

 

CMapStringToString

CWordArray

 

CMapWordToOb

CUIntArray

 

CMapWordToPtr

Le caratteristiche della tabella delle classi di raccolta MFC in Suggerimenti per la scelta di una classe di raccolte descrive le classi di raccolta MFC in termini di queste caratteristiche (diverse dalla forma):

  • Se la classe utilizza modelli C++

  • Se gli elementi memorizzati nella raccolta possono essere serializzati

  • Se agli elementi memorizzati nella raccolta è possibile eseguire il dump per la diagnostica

  • Se la raccolta è indipendente dai tipi

Scegliere l'argomento con cui si desidera procedere

Attività generali della classe di raccolta

Attività delle classi di raccolta basate su modello

Accesso ai membri di una raccolta (basata su modello o meno)

Vedere anche

Concetti

Argomenti MFC generali

Altre risorse

Concetti relativi a MFC