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.
CRBMultiMap
est 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
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