Come memorizzare un elenco di oggetti in MFC

May 21

Ogni linguaggio di programmazione e biblioteca comprende una serie come parte del suo set di strumenti. Gli array sono utili perché consentono immagazzinaggio conveniente ed efficiente dei dati. La libreria MFC fornisce la classe CArray. Può memorizzare dati di qualsiasi tipo. CArray implementa una matrice ridimensionabile capace di comprimere o crescere su richiesta. Seguire questa procedura per praticare le funzioni più comunemente utilizzate su CArray e attuare subito.

istruzione

1 Comprendere la dichiarazione della classe o del prototipo, come illustrato di seguito. Il primo parametro, TYPE, specifica il tipo di oggetti sono memorizzati in e rinviata dal array. Il secondo parametro, ARG_TYPE, indica il tipo di argomento utilizzato per l'accesso a un oggetto. Spesso, ARG_TYPE è un riferimento al primo parametro. Quelli con la conoscenza della Standard Template Library di puro C ++ noteranno somiglianza del prototipo MFC CArray a quella del contenitore Mappa:

template <class TIPO, classe ARG_TYPE> classe CArray: CObject pubblico

2 Conoscere le basi del MFC CArray. L'indicizzazione è a base zero. Cioè, il primo elemento è in posizione 0, mentre l'ultimo elemento è in posizione "ARRAY_SIZE-1." Se l'oggetto CArray è di dimensioni 10, allora il suo ultimo elemento è in posizione 9. La dimensione dell'array può essere preimpostato o gli elementi possono essere aggiunti uno ad uno, consentendo l'array di crescere oltre la sua dimensione corrente. Le allocazioni di memoria sono contigui per impostazione predefinita, fino a quando viene superato il settore di memoria.

3 Pre-allocare memoria per l'array. Fate questo subito dopo la dichiarazione. Anche se non si conosce la dimensione della matrice raggiungerà, fare una stima liberale. Preassegnazione si riserva una contigua (continua) area di memoria in cui la matrice risiederà. Quando la memoria non ha discontinuità, le operazioni di matrice sono più efficienti e trasferimenti di copia e di dati sono impedito. Per questa operazione, utilizzare la "SetSize) (" la funzione.

4 Aggiungere gli oggetti nella matrice utilizzando il "add ()" la funzione, come illustrato di seguito:


CArray <CPoint, PuntoC> Parr;

pArr.Add (PuntoC (20, 40));

5 elementi di accesso memorizzati nella matrice. È possibile farlo attraverso la funzione "GetAt ()" e tramite l'operatore "[]", come in tutte le altre matrici. "GetAt ()" accetta un intero indice e restituisce l'elemento memorizzato in quella posizione. Il suo opposto è "SetAt ()" che cambia un valore per un determinato indice.

6 Rimuovere un elemento dalla matrice. Per questo, è possibile utilizzare il "RemoveAt ()" o la funzione "RemoveAll ()". "RemoveAll ()" cancella l'oggetto CArray di tutti gli elementi. "RemoveAt ()" accetta due ingressi, un indice intero e il numero di elementi da rimuovere partire da quella posizione:

void RemoveAt (int nIndex, int nCount = 1);

Consigli e avvertenze

  • Il tempo necessario per recuperare un elemento da CArray è costante e non dipende dalla sua dimensione e la posizione dell'oggetto.
  • Un certo numero di funzioni membro CArray effettuare chiamate a funzioni di supporto globale che la classe CArray personalizza. Tenetelo a mente quando si considera l'efficienza.
  • "DestructElements ()" è una funzione di supporto che viene chiamato quando gli elementi vengono rimossi. "ConstructElements ()" è una funzione di supporto che viene chiamata quando si creano elementi.
  • Quando distruggi un oggetto CArray che contiene i puntatori, è necessario distruggere gli oggetti hanno indicato separatamente.