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 |
Sì |
No |
Avanzare rapidamente |
Rallentare |
Sì |
Matrice |
Sì |
Da int |
Rallentare |
Rallentare |
Sì |
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ì |
Sì 1 |
Sì 1 |
No |
CByteArray |
No |
Sì |
Sì |
Sì 3 |
CDWordArray |
No |
Sì |
Sì |
Sì 3 |
CList |
Sì |
Sì 1 |
Sì 1 |
No |
CMap |
Sì |
Sì 1 |
Sì 1 |
No |
CMapPtrToPtr |
No |
No |
Sì |
No |
CMapPtrToWord |
No |
No |
Sì |
No |
CMapStringToOb |
No |
Sì |
Sì |
No |
CMapStringToPtr |
No |
No |
Sì |
No |
CMapStringToString |
No |
Sì |
Sì |
Sì 3 |
CMapWordToOb |
No |
Sì |
Sì |
No |
CMapWordToPtr |
No |
No |
Sì |
No |
CObArray |
No |
Sì |
Sì |
No |
CObList |
No |
Sì |
Sì |
No |
CPtrArray |
No |
No |
Sì |
No |
CPtrList |
No |
No |
Sì |
No |
CStringArray |
No |
Sì |
Sì |
Sì 3 |
CStringList |
No |
Sì |
Sì |
Sì 3 |
CTypedPtrArray |
Sì |
Dipendono 2 |
Sì |
Sì |
CTypedPtrList |
Sì |
Dipendono 2 |
Sì |
Sì |
CTypedPtrMap |
Sì |
Dipendono 2 |
Sì |
Sì |
CUIntArray |
No |
No |
Sì |
Sì 3 |
CWordArray |
No |
Sì |
Sì |
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