Collections
La bibliothèque MFC fournit des classes de collection pour gérer des groupes d’objets. Ces classes sont de deux types :
Remarque
Si votre code utilise déjà les classes de collection basées sur des modèles, vous pouvez continuer à les utiliser. Si vous spécifiez de nouvelles classes de collection de type sécurisé pour vos propres types de données, nous vous recommandons d'utiliser les classes les plus récentes basées sur des modèles.
Formes de collection
Une classe de collection est caractérisée par sa "forme" et par les types de ses éléments. La forme fait référence à la façon dont les objets sont organisés et stockés par la collection. MFC fournit trois formes de base de collection : listes, tableaux et mappages (également appelés dictionnaires). Choisissez la forme de collection qui est la plus adaptée à votre problème de programmation particulier.
Chacune des trois formes de collection est décrite brièvement plus loin dans cette rubrique. Pour comparer les caractéristiques des formes pour vous aider à déterminer ce qui convient le mieux à votre programme, consultez Recommandations pour choisir une classe de collection.
Liste
La classe de liste fournit une liste triée et non indexée d'éléments, implémentée comme une liste doublement chaînée. Une liste possède une "tête" et une "queue", et ajouter ou supprimer des éléments de la tête ou de la queue, ou insérer ou supprimer des éléments au milieu, est très rapide.
Tableau
La classe de tableau fournit un tableau d'objets classés, ordonnés et indexés par des entiers.
Mappage (également appelé dictionnaire)
Un mappage est une collection qui associe un objet principal à un objet de valeur.
Classes de collection basées sur des modèles
La façon la plus simple d’implémenter une collection de type sécurisé qui contient des objets de tout type est d’utiliser l’une des classes MFC basées sur un modèle. Pour obtenir des exemples de ces classes, consultez l’exemple MFC COLLECT.
Le tableau suivant répertorie les classes de collection MFC basées sur des modèles :
Classes de modèle de collections
Contenu des collections | Tableaux | Listes | Maps |
---|---|---|---|
Collections d’objets de n’importe quel type | CArray |
CList |
CMap |
Collections de pointeurs vers des objets de n’importe quel type | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Classes de collection non basées sur des modèles
Si votre application utilise déjà les classes MFC de collection qui ne se basent pas sur des modèles, vous pouvez continuer à les utiliser. Toutefois, pour les nouvelles collections, nous vous recommandons d’utiliser les classes basées sur des modèles. Le tableau suivant répertorie les classes de collection MFC qui ne sont pas basées sur des modèles.
Classes de collections non basées sur des modèles
Tableaux | Listes | Maps |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
La table Caractéristiques des classes de collection MFC dans Recommandations pour choisir une classe de collection décrit les classes de collection MFC en termes de ces caractéristiques (autres que la forme) :
Si la classe utilise des modèles C++
Si les éléments stockés dans la collection peuvent être sérialisés
Si les éléments stockés dans la collection peuvent faire l'objet d'un dump pour effectuer des diagnostics
Si la collection est de type sécurisé