recommandations pour choisir une classe de collection
Cet article contient des informations détaillées conçues pour vous aider à choisir une classe de collection selon vos besoins particuliers d'application.
Votre choix d'une classe de collection dépend de plusieurs facteurs, notamment :
Les fonctionnalités de la forme de la classe : ordre, indexation, et performances, comme indiqué dans le tableau Fonctionnalités de la forme de collection plus loin dans cette rubrique
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 être mis de côté pour effectuer des diagnostics
Si la collection est de type sécurisé
Le tableau ci-dessous, Fonctionnalités de forme de collection, résume les caractéristiques de forme disponibles pour la collection.
Les colonnes 2 et 3 décrivent les caractéristiques d'ordre et d'accès de chaque forme. Dans la table, le terme « trié » signifie que l'ordre dans lequel les éléments sont insérés et supprimés détermine leur ordre dans la collection ; cela ne signifie pas que les éléments sont triés selon leur contenu. Le terme « indexé » signifie que les éléments de la collection peuvent être récupérés par un index d'entiers, comme des éléments dans un tableau classique.
Les colonnes 4 et 5 indiquent les performances de chaque forme. Dans les applications qui nécessitent de nombreuses insertions dans la collection, la vitesse d'insertion peut s'avérer importante ; pour d'autres applications, la vitesse de recherche peut être plus importante.
La colonne 6 indique si chaque forme autorise les éléments en double.
Fonctionnalités de la forme de collection
Forme |
Ordonné? |
Indexé? |
Insérer un élément |
Recherchez l'élément spécifié |
Eléments en double? |
---|---|---|---|---|---|
Liste |
Oui |
Non |
Rapide |
Lent |
Oui |
Tableau |
Oui |
Par int |
Lent |
Lent |
Oui |
Table |
Non |
Par clé |
Rapide |
Rapide |
Non (clés) oui (valeurs) |
Le tableau ci-dessous, Caractéristiques de classes de collection de MFC, présente d'autres caractéristiques importantes de classes de collection spécifiques de MFC comme guide de sélection. Votre choix peut dépendre du fait que la classe est basée sur des modèles C++, si les éléments peuvent être sérialisés via le mécanisme de sérialisation de document de MFC, ou si les éléments peuvent être jetés via le mécanisme jetant de diagnostic de MFC, ou si la classe est de type sécurisé c'est à dire si vous pouvez garantir le type d'éléments stockés et récupérés d'une collection de la classe.
Caractéristiques de classes de collection de MFC
Classe |
Utilise C++ modèles |
Peut être sérialisé |
Peut être jeté |
Is type sécurisé |
---|---|---|---|---|
CArray |
Oui |
Oui 1 |
Oui 1 |
Non |
CByteArray |
Non |
Oui |
Oui |
Oui 3 |
CDWordArray |
Non |
Oui |
Oui |
Oui 3 |
CList |
Oui |
Oui 1 |
Oui 1 |
Non |
CMap |
Oui |
Oui 1 |
Oui 1 |
Non |
CMapPtrToPtr |
Non |
Non |
Oui |
Non |
CMapPtrToWord |
Non |
Non |
Oui |
Non |
CMapStringToOb |
Non |
Oui |
Oui |
Non |
CMapStringToPtr |
Non |
Non |
Oui |
Non |
CMapStringToString |
Non |
Oui |
Oui |
Oui 3 |
CMapWordToOb |
Non |
Oui |
Oui |
Non |
CMapWordToPtr |
Non |
Non |
Oui |
Non |
CObArray |
Non |
Oui |
Oui |
Non |
CObList |
Non |
Oui |
Oui |
Non |
CPtrArray |
Non |
Non |
Oui |
Non |
CPtrList |
Non |
Non |
Oui |
Non |
CStringArray |
Non |
Oui |
Oui |
Oui 3 |
CStringList |
Non |
Oui |
Oui |
Oui 3 |
CTypedPtrArray |
Oui |
Cela dépend 2 |
Oui |
Oui |
CTypedPtrList |
Oui |
Cela dépend 2 |
Oui |
Oui |
CTypedPtrMap |
Oui |
Cela dépend 2 |
Oui |
Oui |
CUIntArray |
Non |
Non |
Oui |
Oui 3 |
CWordArray |
Non |
Oui |
Oui |
Oui 3 |
1. Pour sérialiser, vous devez appeler explicitement la fonction Serialize de l'objet de collection ; pour vider, vous devez appeler explicitement la fonction Dump. Vous ne pouvez pas utiliser le formulaire ar << collObj pour sérialiser ou la forme dmp << collObj pour vider.
2. Sérialisation dépend du type de collecte sous-jacent. Par exemple, si un tableau de pointeurs typé est basé sur CObArray, il est serializable ; si il est basé sur CPtrArray, il n'est pas sérialisable. En général les classes « PTR » ne pouvent pas être sérialisées.
3. Si elle est marquée Oui dans cette colonne, une classe de collection basée sur des modèles est de type sécurisé tant que vous l'utilisez comme prévu. Par exemple, si vous stockez des octets dans CByteArray, le tableau est de type sécurisé. Mais si vous l'utilisez pour stocker des caractères, sa sécurité de types est moins certaine.
Voir aussi
Tâches
accès de tous les membres d'une collection