Condividi tramite


Classe Recommendations for Choosing a Collection

Questo articolo vengono fornite informazioni dettagliate progettata per facilitare la scelta di una classe di raccolte per le esigenze specifiche dell'applicazione.

La scelta di una classe di raccolte dipende da numerosi fattori, tra cui:

  • Le funzionalità della forma della classe: ordine, indicizzazione e prestazioni, come illustrato nella tabella di Funzionalità di libreria di forme più avanti in questo argomento

  • Se la classe utilizza i modelli C++

  • Se gli elementi archiviati nella libreria possono essere serializzati

  • Se gli elementi archiviati nella libreria è possibile eseguire il dump per la diagnostica

  • Se la raccolta è indipendente dai tipi

La tabella riportata di seguito, Funzionalità di libreria di forme, riepilogate le caratteristiche delle forme di raccolta disponibili.

  • Le colonne 2 e 3 descrivono le caratteristiche dell'ordine e accedere a ogni forma.Nella tabella, il termine “ordinato„ significa che l'ordine in cui gli elementi vengono inseriti ed eliminate determinare l'ordine nella raccolta; non significa che gli elementi vengono ordinati i relativi contenuti.Il termine “indicizzato„ significa che gli elementi nella raccolta possono essere recuperati da un intero, analogamente agli elementi di una matrice tipica.

  • Le colonne 4 e 5 descrivono le prestazioni di ogni forma.Nelle applicazioni che richiedono molti inserimenti nella raccolta, la velocità di inserimento può essere particolarmente importante, per altre applicazioni, la velocità di ricerca può essere più importante.

  • La colonna 6 indica se ogni forma consente elementi duplicati.

Funzionalità di libreria di forme

Forma

ordinato?

indicizzato?

Inserire un elemento

Trovare l'elemento specificato

Duplicare gli elementi?

Elenco

No

Avanzare rapidamente

Rallentare

Matrice

Da int

Rallentare

Rallentare

Mappa

No

La chiave

Avanzare rapidamente

Avanzare rapidamente

Nessun (tasti) sì (valori)

La tabella riportata di seguito, Caratteristiche delle classi collection MFC, riepilogate le altre caratteristiche principali delle classi di raccolte specifiche di MFC come guida nella selezione.La scelta può dipendere dal fatto che la classe è basata su modelli C++, se i relativi elementi possono essere serializzati mediante il meccanismo di serializzazione del documento di MFC, se i relativi elementi è possibile eseguire il dump mediante il meccanismo eseguire il dump di diagnostica di MFC, o se la classe è indipendente dai tipi, ovvero se è possibile garantire il tipo di elementi archiviati in e recuperati da una raccolta basata sulla classe.

Caratteristiche delle classi collection MFC

Classe

Utilizza C++

modelli

Può essere

serializzato

Può essere

esegue il dump

Is

indipendente dai tipi

CArray

Sì 1

Sì 1

No

CByteArray

No

Sì 3

CDWordArray

No

Sì 3

CList

Sì 1

Sì 1

No

CMap

Sì 1

Sì 1

No

CMapPtrToPtr

No

No

No

CMapPtrToWord

No

No

No

CMapStringToOb

No

No

CMapStringToPtr

No

No

No

CMapStringToString

No

Sì 3

CMapWordToOb

No

No

CMapWordToPtr

No

No

No

CObArray

No

No

CObList

No

No

CPtrArray

No

No

No

CPtrList

No

No

No

CStringArray

No

Sì 3

CStringList

No

Sì 3

CTypedPtrArray

Dipendono 2

CTypedPtrList

Dipendono 2

CTypedPtrMap

Dipendono 2

CUIntArray

No

No

Sì 3

CWordArray

No

Sì 3

1.Per serializzare, è necessario chiamare in modo esplicito la funzione di Serialize dell'oggetto Collection, per eseguire il dump, è necessario chiamare in modo esplicito la relativa funzione di Dump .Non è possibile utilizzare la forma ar << collObj per serializzare o il form dmp<< collObj da eseguire il dump.

2.Serializability dipende dal tipo di raccolta sottostante.Ad esempio, se una matrice di puntatore tipizzata è basata su CObArray, serializzabile; se basato su CPtrArray, non serializzabile.Le classi “PTR„ non è possibile serializzare correttamente.

3.Se contrassegnato sì in questa colonna, una classe di raccolte non template è indipendente dai tipi fornita è viene utilizzata come previsto.Ad esempio, se si archiviano i byte in CByteArray, la matrice è indipendente dai tipi.Ma se la variabile viene utilizzata per memorizzare i caratteri, la relativa indipendenza dai tipi è meno determinata.

Vedere anche

Attività

Accedere a tutti i membri di una raccolta

Concetti

Raccolte

Le classi Basate su modelli

Procedura: Fare una raccolta indipendente dai tipi