Array, List e classi di mappa

Per la gestione degli aggregati di dati, la libreria di classi fornisce un gruppo di classi collection — matrici, elenchi e "mappe" — che può contenere una varietà di oggetti e tipi predefiniti. Le collezioni sono dimensionate in modo dinamico. Queste classi possono essere utilizzate in qualsiasi programma, se scritto per Windows o no. Tuttavia, essi sono più utili per l'attuazione delle strutture dati che definiscono le classi di documento nell'ambito di applicazione. È facilmente possibile derivare classi di insiemi specializzati da questi, oppure è possibile creare in base alle classi di modelli. Per ulteriori informazioni su questi approcci, vedere l'articolo raccolte nel manuale del programmatore di Visual C++ e Classi Template per matrici, elenchi e mappe in questa panoramica per un elenco di classi di insiemi il modello.

Le matrici sono strutture di dati unidimensionale che vengono archiviate in modo contiguo nella memoria. Essi supportano l'accesso casuale molto veloce poiché l'indirizzo di memoria di qualsiasi elemento dato può essere calcolato moltiplicando l'indice dell'elemento per le dimensioni di un elemento e aggiungendo il risultato all'indirizzo base della matrice. Ma le matrici sono molto costose se avete inserire elementi nella matrice, poiché l'intero array passato l'elemento inserito ha essere spostato per fare spazio per l'elemento da inserire. Matrici possono crescere e ridursi come necessari.

Gli elenchi sono simili alle matrici ma vengono memorizzati in modo molto diverso. Ogni elemento di un elenco include anche un puntatore agli elementi precedenti e successivi, che lo rende una lista doppiamente. Esso è molto velocizza per aggiungere o eliminare elementi, perché solo in questo modo comporta la modifica alcune indicazioni. Tuttavia, alla ricerca di una lista può essere costosa dato che tutte le ricerche necessarie per iniziare ad una delle estremità dell'elenco.

Mappe si riferiscono a un valore di chiave per un valore di dati. Per esempio, la chiave di una mappa potrebbe essere una stringa e i dati di un puntatore in un elenco. Vorrei chiedere la mappa per darvi il puntatore associato con una determinata stringa. Mappa le ricerche sono veloce perché mappe utilizzano tabelle hash per ricerche chiave. Aggiunta ed eliminazione di oggetti è anche veloce. Mappe sono spesso utilizzati con altre strutture di dati come indici di ausiliari. MFC utilizza uno speciale tipo di mappa chiamato un " mappa messaggi" per eseguire il mapping dei messaggi di Windows a un puntatore a funzione del gestore per tale messaggio.

Index