Partager via


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

Concepts

Collections

Classes basée sur les rôles

Comment : Effectuez une collection de type sécurisé