Recommendations for Choosing a Collection, classe
Cet article contient des informations détaillées conçues pour vous aider à choisir votre classe de collection pour 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 classe : commande, indexage, et performances, comme indiqué dans le tableau de fonctionnalités de forme de collection plus loin dans cette rubrique
Si la classe utilise des modèles C++
Si les éléments contenus dans la collection peuvent être sérialisés
Si les éléments contenus dans la collection peuvent être clichés pour le diagnostic
Si la collection est de type sécurisé
Le tableau suivant, fonctionnalités de forme de collection, résume les caractéristiques des formes disponibles de collection.
Les colonnes 2 et 3 décrivent les caractéristiques de chaque la forme de classement et de l'accès.Dans la table, le terme « taille » signifie que l'ordre dans lequel les éléments sont insérés et supprimés détermine leur ordre de la collection ; il ne signifie pas que les éléments sont triés à leur contenu.Le terme « a indexé » signifie que les éléments de la collection peuvent être extraits par un index d'entiers, comme des éléments d'un tableau ordinaire.
Les colonnes 4 et 5 décrivent la représentation de chaque forme.Dans les applications qui requièrent plusieurs insertions dans la collection, la vitesse d'insertion peut être particulièrement importante ; pour d'autres applications, la vitesse de recherche peut être plus importante.
La colonne 6 indique si chaque forme permet d'éléments en double.
Fonctionnalités de forme de collection
Forme |
Dimensionné ? |
Indexé ? |
Insérez un élément |
Recherchez l'élément spécifié |
Éléments en double ? |
---|---|---|---|---|---|
Liste |
Oui |
Non |
Rapide |
Lent |
Oui |
Tableau |
Oui |
Par int |
Lent |
Lent |
Oui |
Carte |
Non |
Par clé |
Rapide |
Rapide |
Aucune (clés) oui (valeurs) |
Le tableau suivant, Caractéristiques des classes de collection MFC, fournit d'autres caractéristiques importantes des classes de collection spécifiques MFC en tant que modèle de sélection.Votre choix peut dépendre de si la classe est basé sur des modèles C++, si ses éléments peuvent être sérialisés via le mécanisme de sérialisation du document MFC, si ses éléments peuvent être clichés via le mécanisme dump de diagnostic MFC, ou si la classe est de type sécurisé - c. autrement dit., si vous pouvez garantir que le type d'éléments stockés dans et extraits d'une collection sur la classe.
Caractéristiques des classes de collection MFC
Classe |
Utilise C++ modèles |
Peut être sérialisé |
Peut être création de clichés |
Est de 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 |
Dépend 2 |
Oui |
Oui |
CTypedPtrList |
Oui |
Dépend 2 |
Oui |
Oui |
CTypedPtrMap |
Oui |
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 d' Serialize de l'objet collection ; pour faire un dump, vous devez appeler explicitement sa fonction d' Dump .Vous ne pouvez pas utiliser la forme ar << collObj pour sérialiser ou le formulaire dmp<< collObj à faire un dump.
2.Serializability dépend du type de collection sous-jacent.Par exemple, si un tableau de pointeur typée est basé sur CObArray, elle est sérialisable ; si en fonction CPtrArray, elle n'est pas sérialisable.En général les classes de « prentice » ne peut pas être sérialisées.
3.Si marqué oui dans cette colonne, une classe de collection non basée sur un modèle est de type sécurisé fournie vous l'utilisez comme prévu.Par exemple, si vous enregistrez 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 type est moins sûre.
Voir aussi
Tâches
Accès à tous les membres d'une collection