Partager via


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

Concepts

Collections

Classes basées sur des modèles

Comment : faites une collection de type sécurisé