Condividi tramite


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

Operazione da eseguire

Attività generali della classe Collection

Attività delle classi di raccolta basate su modello

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

Vedi anche

Concetti
Argomenti MFC generali