Partager via


CRBMultiMap, classe

Cette classe représente une structure de mappage qui permet à chaque clé d’être associée à plusieurs valeurs, à l’aide d’une arborescence binaire Rouge-Noir.

Syntaxe

template<typename K,
         typename V,
         class KTraits = CElementTraits<K>,
         class VTraits = CElementTraits<V>>
class CRBMultiMap : public CRBTree<K, V, KTraits, VTraits>

Paramètres

K
Type d’élément clé.

V
Type d’élément value.

KTraits
Code utilisé pour copier ou déplacer des éléments clés. Pour plus d’informations, consultez la classe CElementTraits.

VTraits
Code utilisé pour copier ou déplacer des éléments de valeur.

Membres

Constructeurs publics

Nom Description
CRBMultiMap ::CRBMultiMap Constructeur .
CRBMultiMap ::~CRBMultiMap Destructeur.

Méthodes publiques

Nom Description
CRBMultiMap ::FindFirstWithKey Appelez cette méthode pour rechercher la position du premier élément avec une clé donnée.
CRBMultiMap ::GetNextValueWithKey Appelez cette méthode pour obtenir la valeur associée à une clé donnée et mettre à jour la valeur de position.
CRBMultiMap ::GetNextWithKey Appelez cette méthode pour obtenir l’élément associé à une clé donnée et mettre à jour la valeur de position.
CRBMultiMap ::Insert Appelez cette méthode pour insérer une paire d’éléments dans la carte.
CRBMultiMap ::RemoveKey Appelez cette méthode pour supprimer tous les éléments clé/valeur d’une clé donnée.

Notes

CRBMultiMap fournit la prise en charge d’un tableau de mappage d’un type donné, la gestion d’un tableau ordonné d’éléments et de valeurs clés. Contrairement à la classe CRBMap , chaque clé peut être associée à plusieurs valeurs.

Les éléments (constitués d’une clé et d’une valeur) sont stockés dans une arborescence binaire, à l’aide de la méthode CRBMultiMap ::Insert . Les éléments peuvent être supprimés à l’aide de la méthode CRBMultiMap ::RemoveKey , qui supprime tous les éléments qui correspondent à la clé donnée.

La traversée de l’arborescence est rendue possible avec des méthodes telles que CRBTree ::GetHeadPosition, CRBTree ::GetNext et CRBTree ::GetNextValue. L’accès aux valeurs potentiellement multiples par clé est possible à l’aide des méthodes CRBMultiMap ::FindFirstWithKey, CRBMultiMap ::GetNextValueWithKey et CRBMultiMap ::GetNextWithKey . Consultez l’exemple de CRBMultiMap ::CRBMultiMap pour obtenir une illustration de ceci dans la pratique.

Les paramètres KTraits et VTraits sont des classes de caractéristiques qui contiennent tout code supplémentaire nécessaire pour copier ou déplacer des éléments.

CRBMultiMapest dérivé de CRBTree, qui implémente une arborescence binaire à l’aide de l’algorithme Red-Black. Une alternative à CRBMultiMap et CRBMap est proposée par la classe CAtlMap . Lorsque seul un petit nombre d’éléments doit être stocké, envisagez plutôt d’utiliser la classe CSimpleMap .

Pour une discussion plus complète sur les différentes classes de collection et leurs caractéristiques de performances, consultez les classes de collection ATL.

Hiérarchie d'héritage

CRBTree

CRBMultiMap

Spécifications

En-tête : atlcoll.h

CRBMultiMap ::CRBMultiMap

Constructeur .

explicit CRBMultiMap(size_t nBlockSize = 10) throw();

Paramètres

nBlockSize
Taille du bloc.

Notes

Le paramètre nBlockSize est une mesure de la quantité de mémoire allouée lorsqu’un nouvel élément est requis. Les tailles de bloc supérieures réduisent les appels aux routines d’allocation de mémoire, mais utilisent davantage de ressources. La valeur par défaut alloue de l’espace pour 10 éléments à la fois.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

Exemple

// Define a multimap object which has an integer
// key, a double value, and a block size of 5
CRBMultiMap<int, double> myMap(5);

// Add some key/values. Notice how three
// different values are associated with 
// one key. In a CRBMap object, the values
// would simply overwrite each other.
myMap.Insert(0, 1.1);
myMap.Insert(0, 1.2);
myMap.Insert(0, 1.3);
myMap.Insert(1, 2.1);

// Look up a key and iterate through
// all associated values

double v;
POSITION myPos = myMap.FindFirstWithKey(0);

while (myPos != NULL)
{
   v = myMap.GetNextValueWithKey(myPos,0);
   // As the loop iterates, v 
   // contains the values 1.3, 1.2, 1.1
}

// Remove all of the values associated with that key
size_t i = myMap.RemoveKey(0);

// Confirm all three values were deleted
ATLASSERT(i == 3);

CRBMultiMap ::~CRBMultiMap

Destructeur.

~CRBMultiMap() throw();

Notes

Libère toutes les ressources allouées.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

CRBMultiMap ::FindFirstWithKey

Appelez cette méthode pour rechercher la position du premier élément avec une clé donnée.

POSITION FindFirstWithKey(KINARGTYPE key) const throw();

Paramètres

key
Spécifie la clé qui identifie l’élément à trouver.

Valeur de retour

Retourne la position du premier élément clé/valeur si la clé est trouvée, NULL sinon.

Notes

Une clé dans le CRBMultiMap fichier peut avoir une ou plusieurs valeurs associées. Cette méthode fournit la valeur de position de la première valeur (qui peut, en fait, être la seule valeur) associée à cette clé particulière. La valeur de position retournée peut ensuite être utilisée avec CRBMultiMap ::GetNextValueWithKey ou CRBMultiMap ::GetNextWithKey pour obtenir la valeur et mettre à jour la position.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

Exemple

Consultez l’exemple de CRBMultiMap ::CRBMultiMap.

CRBMultiMap ::GetNextValueWithKey

Appelez cette méthode pour obtenir la valeur associée à une clé donnée et mettre à jour la valeur de position.

const V& GetNextValueWithKey(
    POSITION& pos,
    KINARGTYPE key) const throw();
V& GetNextValueWithKey(
    POSITION& pos,
    KINARGTYPE key) throw();

Paramètres

pos
Valeur de position, obtenue avec un appel à CRBMultiMap ::FindFirstWithKey ou CRBMultiMap ::GetNextWithKey, ou un appel précédent à GetNextValueWithKey.

key
Spécifie la clé qui identifie l’élément à trouver.

Valeur de retour

Retourne la paire d’éléments associée à la clé donnée.

Notes

La valeur de position est mise à jour pour pointer vers la valeur suivante associée à la clé. Si aucune valeur supplémentaire n’existe, la valeur de position est définie sur NULL.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

Exemple

Consultez l’exemple de CRBMultiMap ::CRBMultiMap.

CRBMultiMap ::GetNextWithKey

Appelez cette méthode pour obtenir l’élément associé à une clé donnée et mettre à jour la valeur de position.

const CPair* GetNextWithKey(
    POSITION& pos,
    KINARGTYPE key) const throw();
CPair* GetNextWithKey(
    POSITION& pos,
    KINARGTYPE key) throw();

Paramètres

pos
Valeur de position, obtenue avec un appel à CRBMultiMap ::FindFirstWithKey ou CRBMultiMap ::GetNextValueWithKey, ou un appel précédent à GetNextWithKey.

key
Spécifie la clé qui identifie l’élément à trouver.

Valeur de retour

Retourne l’élément CRBTree ::CPair Class suivant associé à la clé donnée.

Notes

La valeur de position est mise à jour pour pointer vers la valeur suivante associée à la clé. Si aucune valeur supplémentaire n’existe, la valeur de position est définie sur NULL.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

CRBMultiMap ::Insert

Appelez cette méthode pour insérer une paire d’éléments dans la carte.

POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);

Paramètres

key
Valeur de clé à ajouter à l’objet CRBMultiMap .

value
Valeur à ajouter à l’objet CRBMultiMap , associée à la clé.

Valeur de retour

Retourne la position de la paire d’éléments clé/valeur dans l’objet CRBMultiMap .

Notes

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

Exemple

Consultez l’exemple de CRBMultiMap ::CRBMultiMap.

CRBMultiMap ::RemoveKey

Appelez cette méthode pour supprimer tous les éléments clé/valeur d’une clé donnée.

size_t RemoveKey(KINARGTYPE key) throw();

Paramètres

key
Spécifie la clé qui identifie le ou les éléments à supprimer.

Valeur de retour

Retourne le nombre de valeurs associées à la clé donnée.

Notes

RemoveKey supprime tous les éléments clé/valeur qui ont une clé qui correspond à la clé.

Pour plus d’informations sur les autres méthodes disponibles, consultez la documentation de la classe de base CRBTree .

Exemple

Consultez l’exemple de CRBMultiMap ::CRBMultiMap.

Voir aussi

CRBTree, classe
CAtlMap, classe
CRBMap, classe
Vue d’ensemble de la classe