Share via


La classe CMapStringToOb

Classe de collection de dictionnaires qui mappe des objets CString uniques à des pointeurs CObject .

Syntaxe

class CMapStringToOb : public CObject

Membres

Constructeurs publics

Nom Description
CMapStringToOb::CMapStringToOb Constructeur.

Méthodes publiques

Nom Description
CMapStringToOb::GetCount Retourne le nombre d’éléments de cette carte.
CMapStringToOb::GetHashTableSize Détermine le nombre actuel d’éléments dans la table de hachage.
CMapStringToOb::GetNextAssoc Obtient l’élément suivant pour itérer.
CMapStringToOb::GetSize Retourne le nombre d’éléments de cette carte.
CMapStringToOb::GetStartPosition Retourne la position du premier élément.
CMapStringToOb::HashKey Calcule la valeur de hachage d’une clé spécifiée.
CMapStringToOb::InitHashTable Initialise la table de hachage.
CMapStringToOb::IsEmpty Teste la condition de mappage vide (aucun élément).
CMapStringToOb::Lookup Recherche un pointeur void basé sur la clé de pointeur void. La valeur du pointeur, et non l’entité vers laquelle il pointe, est utilisée pour la comparaison de clés.
CMapStringToOb::LookupKey Retourne une référence à la clé associée à la valeur de clé spécifiée.
CMapStringToOb::RemoveAll Supprime tous les éléments de cette carte.
CMapStringToOb::RemoveKey Supprime un élément spécifié par une clé.
CMapStringToOb::SetAt Insère un élément dans la carte ; remplace un élément existant si une clé correspondante est trouvée.

Opérateurs publics

Nom Description
CMapStringToOb::operator [ ] Insère un élément dans la carte — substitution d’opérateur pour SetAt.

Notes

Une fois que vous avez inséré une CString- CObject* paire (élément) dans la carte, vous pouvez récupérer ou supprimer efficacement la paire à l’aide d’une chaîne ou d’une CString valeur en tant que clé. Vous pouvez également itérer sur tous les éléments de la carte.

Une variable de type POSITION est utilisée pour l’accès d’entrée de remplacement dans toutes les variantes de carte. Vous pouvez utiliser une POSITION entrée pour « mémoriser » une entrée et effectuer une itération dans la carte. Vous pouvez penser que cette itération est séquentielle par valeur de clé ; ce n’est pas le cas. La séquence d’éléments récupérés est indéterminée.

CMapStringToOb incorpore la macro IMPLEMENT_SERIAL pour prendre en charge la sérialisation et le vidage de ses éléments. Chaque élément est sérialisé à son tour si une carte est stockée dans une archive, avec l’opérateur d’insertion surchargée ( <<) ou avec la Serialize fonction membre.

Si vous avez besoin d’un vidage de diagnostic des éléments individuels dans la carte (la CString valeur et le CObject contenu), vous devez définir la profondeur du contexte de vidage sur 1 ou supérieur.

Lorsqu’un CMapStringToOb objet est supprimé ou lorsque ses éléments sont supprimés, les CString objets et les CObject pointeurs sont supprimés. Les objets référencés par les CObject pointeurs ne sont pas détruits.

La dérivation de classe map est similaire à la dérivation de liste. Consultez l’article Collections pour obtenir une illustration de la dérivation d’une classe de liste à usage spécial.

Hiérarchie d'héritage

CObject

CMapStringToOb

Spécifications

En-têteafxcoll.h:

CMapStringToOb::CMapStringToOb

Construit une carte vide CStringà CObject* mapper.

CMapStringToOb(INT_PTR nBlockSize = 10);

Paramètres

nBlockSize
Spécifie la granularité d’allocation de mémoire pour étendre la carte.

Notes

À mesure que la carte augmente, la mémoire est allouée en unités d’entrées nBlockSize .

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb:: CMapStringToOb.

Classe Fonction membre
CMapPtrToPtr CMapPtrToPtr( INT_PTR nBlockSize = 10 );
CMapPtrToWord CMapPtrToWord( INT_PTR nBlockSize = 10 );
CMapStringToPtr CMapStringToPtr( INT_PTR nBlockSize = 10 );
CMapStringToString CMapStringToString( INT_PTR nBlockSize = 10 );
CMapWordToOb CMapWordToOb( INT_PTR nBlockSize = 10 );
CMapWordToPtr MapWordToPtr( INT_PTR nBlockSize = 10 );

Exemple

CMapStringToOb map(20); // Map on the stack with blocksize of 20

CMapStringToOb *pm = new CMapStringToOb; // Map on the heap
                                         // with default blocksize

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb::GetCount

Détermine le nombre d’éléments dans la carte.

INT_PTR GetCount() const;

Valeur de retour

Nombre d’éléments de cette carte.

Notes

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::GetCount.

Classe Fonction membre
CMapPtrToPtr INT_PTR GetCount() const;
CMapPtrToWord INT_PTR GetCount() const;
CMapStringToPtr INT_PTR GetCount() const;
CMapStringToString INT_PTR GetCount() const;
CMapWordToOb INT_PTR GetCount() const;
CMapWordToPtr INT_PTR GetCount() const;

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Homer"), new CAge(36));
ASSERT(map.GetCount() == 2);

CMapStringToOb::GetHashTableSize

Détermine le nombre actuel d’éléments dans la table de hachage.

UINT GetHashTableSize() const;

Valeur de retour

Retourne le nombre d’éléments dans la table de hachage.

Notes

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::GetHashTableSize.

Classe Fonction membre
CMapPtrToPtr UINT GetHashTableSize() const;
CMapPtrToWord UINT GetHashTableSize() const;
CMapStringToPtr UINT GetHashTableSize() const;
CMapStringToString UINT GetHashTableSize() const;
CMapWordToOb UINT GetHashTableSize() const;
CMapWordToPtr UINT GetHashTableSize() const;

CMapStringToOb::GetNextAssoc

Récupère l’élément de carte à l’adresse rNextPosition, puis met à jour rNextPosition pour faire référence à l’élément suivant dans la carte.

void GetNextAssoc(
    POSITION& rNextPosition,
    CString& rKey,
    CObject*& rValue) const;

Paramètres

rNextPosition
Spécifie une référence à une valeur POSITION retournée par un appel ou GetStartPosition un précédentGetNextAssoc.

rKey
Spécifie la clé retournée de l’élément récupéré (une chaîne).

rValue
Spécifie la valeur retournée de l’élément récupéré (pointeur CObject ). Pour plus d’informations sur ce paramètre, consultez Les remarques .

Notes

Cette fonction est particulièrement utile pour effectuer une itération sur tous les éléments de la carte. Notez que la séquence de position n’est pas nécessairement la même que la séquence de valeurs de clé.

Si l’élément récupéré est le dernier de la carte, la nouvelle valeur rNextPosition est définie NULLsur .

Pour le rValue paramètre, veillez à convertir votre type CObject*&d’objet en , c’est-à-dire ce dont le compilateur a besoin, comme illustré dans l’exemple suivant :

CObject *ob;
map.GetNextAssoc(pos, key, (CObject *&)ob);

Cela n’est pas vrai pour GetNextAssoc les cartes basées sur des modèles.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::GetNextAssoc.

Classe Fonction membre
CMapPtrToPtr void GetNextAssoc( POSITION& rNextPosition , void*& rKey , void*& rValue ) const;
CMapPtrToWord void GetNextAssoc( POSITION& rNextPosition , void*& rKey , WORD& rValue ) const;
CMapStringToPtr void GetNextAssoc( POSITION& rNextPosition , CString& rKey , void*& rValue ) const;
CMapStringToString void GetNextAssoc( POSITION& rNextPosition , CString& rKey , CString& rValue ) const;
CMapWordToOb void GetNextAssoc( POSITION& rNextPosition , WORD& rKey , CObject*& rValue ) const;
CMapWordToPtr void GetNextAssoc( POSITION& rNextPosition , WORD& rKey , void*& rValue ) const;

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;
POSITION pos;
CString key;
CAge *pa;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Lisa"), new CAge(11));
map.SetAt(_T("Homer"), new CAge(36));
map.SetAt(_T("Marge"), new CAge(35));
// Iterate through the entire map, dumping both name and age.
for (pos = map.GetStartPosition(); pos != NULL;)
{
   map.GetNextAssoc(pos, key, (CObject *&)pa);
#ifdef _DEBUG
   afxDump << key << _T(" : ") << pa << _T("\n");
#endif
}

Les résultats de ce programme sont les suivants :

Lisa : a CAge at $4724 11
Marge : a CAge at $47A8 35
Homer : a CAge at $4766 36
Bart : a CAge at $45D4 13

CMapStringToOb::GetSize

Retourne le nombre d’éléments de carte.

INT_PTR GetSize() const;

Valeur de retour

Nombre d’éléments dans la carte.

Notes

Appelez cette méthode pour récupérer le nombre d’éléments dans la carte.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::GetSize.

Classe Fonction membre
CMapPtrToPtr INT_PTR GetSize() const;
CMapPtrToWord INT_PTR GetSize() const;
CMapStringToPtr INT_PTR GetSize() const;
CMapStringToString INT_PTR GetSize() const;
CMapWordToOb INT_PTR GetSize() const;
CMapWordToPtr INT_PTR GetSize() const;

Exemple

CMapStringToOb map;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Homer"), new CAge(36));
ASSERT(map.GetSize() == 2);

CMapStringToOb::GetStartPosition

Démarre une itération de carte en retournant une POSITION valeur qui peut être passée à un GetNextAssoc appel.

POSITION GetStartPosition() const;

Valeur de retour

Valeur POSITION qui indique une position de départ pour itérer la carte ; ou NULL si la carte est vide.

Notes

La séquence d’itération n’est pas prévisible ; par conséquent, le « premier élément de la carte » n’a aucune signification particulière.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::GetStartPosition.

Classe Fonction membre
CMapPtrToPtr POSITION GetStartPosition() const;
CMapPtrToWord POSITION GetStartPosition() const;
CMapStringToPtr POSITION GetStartPosition() const;
CMapStringToString POSITION GetStartPosition() const;
CMapWordToOb POSITION GetStartPosition() const;
CMapWordToPtr POSITION GetStartPosition() const;

Exemple

Consultez l’exemple pour CMapStringToOb::GetNextAssoc.

CMapStringToOb::HashKey

Calcule la valeur de hachage d’une clé spécifiée.

UINT HashKey(LPCTSTR key) const;

Paramètres

key
Clé dont la valeur de hachage doit être calculée.

Valeur de retour

Valeur de hachage de la clé

Notes

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::HashKey.

Classe Fonction membre
CMapPtrToPtr UINT HashKey( void *key ) const;
CMapPtrToWord UINT HashKey( void *key ) const;
CMapStringToString UINT HashKey( LPCTSTR key ) const;
CMapStringToPtr UINT HashKey( LPCTSTR key ) const;
CMapWordToOb UINT HashKey( WORD key ) const;
CMapWordToPtr UINT HashKey( WORD key ) const;

CMapStringToOb::InitHashTable

Initialise la table de hachage.

void InitHashTable(
    UINT hashSize,
    BOOL bAllocNow = TRUE);

Paramètres

hashSize
Nombre d’entrées dans la table de hachage.

bAllocNow
Si TRUE, alloue la table de hachage lors de l’initialisation ; sinon, la table est allouée si nécessaire.

Notes

Pour des performances optimales, la taille de la table de hachage doit être un nombre premier. Pour réduire les collisions, la taille doit être d’environ 20 % supérieure au plus grand jeu de données prévu.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::InitHashTable.

Classe Fonction membre
CMapPtrToPtr void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );
CMapPtrToWord void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );
CMapStringToString void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );
CMapStringToPtr void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );
CMapWordToOb void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );
CMapWordToPtr void InitHashTable( UINT hashSize , BOOL bAllocNow = TRUE );

CMapStringToOb::IsEmpty

Détermine si la carte est vide.

BOOL IsEmpty() const;

Valeur de retour

Différent de zéro si cette carte ne contient aucun élément ; sinon 0.

Exemple

Consultez l’exemple pour RemoveAll.

Notes

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb:: IsEmpty.

Classe Fonction membre
CMapPtrToPtr BOOL IsEmpty() const;
CMapPtrToWord BOOL IsEmpty() const;
CMapStringToPtr BOOL IsEmpty() const;
CMapStringToString BOOL IsEmpty() const;
CMapWordToOb BOOL IsEmpty() const;
CMapWordToPtr BOOL IsEmpty() const;

CMapStringToOb::Lookup

Retourne un CObject pointeur basé sur une CString valeur.

BOOL Lookup(
    LPCTSTR key,
    CObject*& rValue) const;

Paramètres

key
Spécifie la clé de chaîne qui identifie l’élément à rechercher.

rValue
Spécifie la valeur retournée à partir de l’élément recherché.

Valeur de retour

Différent de zéro si l’élément a été trouvé ; sinon 0.

Notes

Lookup utilise un algorithme de hachage pour rechercher rapidement l’élément de carte avec une clé qui correspond exactement ( CString valeur).

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::LookUp.

Classe Fonction membre
CMapPtrToPtr BOOL Lookup( void *key , void*& rValue ) const;
CMapPtrToWord BOOL Lookup( void *key , WORD& rValue ) const;
CMapStringToPtr BOOL Lookup( LPCTSTR key , void*& rValue ) const;
CMapStringToString BOOL Lookup( LPCTSTR key , CString& rValue ) const;
CMapWordToOb BOOL Lookup( WORD key , CObject*& rValue ) const;
CMapWordToPtr BOOL Lookup( WORD key , void*& rValue ) const;

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;
CAge *pa;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Lisa"), new CAge(11));
map.SetAt(_T("Homer"), new CAge(36));
map.SetAt(_T("Marge"), new CAge(35));
ASSERT(map.Lookup(_T("Lisa"), (CObject *&)pa)); // Is "Lisa" in the map?
ASSERT(*pa == CAge(11));                        // Is she 11?

CMapStringToOb::LookupKey

Retourne une référence à la clé associée à la valeur de clé spécifiée.

BOOL LookupKey(
    LPCTSTR key,
    LPCTSTR& rKey) const;

Paramètres

key
Spécifie la clé de chaîne qui identifie l’élément à rechercher.

rKey
Référence à la clé associée.

Valeur de retour

Différent de zéro si la clé a été trouvée ; sinon 0.

Notes

L’utilisation d’une référence à une clé est dangereuse si elle est utilisée après la suppression de l’élément associé de la carte ou après la destruction de la carte.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb:: LookupKey.

Classe Fonction membre
CMapStringToPtr BOOL LookupKey( LPCTSTR key , LPCTSTR& rKey ) const;
CMapStringToString BOOL LookupKey( LPCTSTR key , LPCTSTR& rKey ) const;

CMapStringToOb::operator [ ]

Substitut pratique de la SetAt fonction membre.

CObject*& operator[ ](lpctstr key);

Valeur de retour

Référence à un pointeur vers un CObject objet ; ou NULL si la carte est vide ou key est hors limites.

Notes

Il ne peut donc être utilisé que sur le côté gauche d’une instruction d’affectation (un l-value). S’il n’existe aucun élément de mappage avec la clé spécifiée, un nouvel élément est créé.

Il n’existe pas de « côté droit » (r-value) équivalent à cet opérateur, car il est possible qu’une clé ne soit pas trouvée dans la carte. Utilisez la fonction membre pour la récupération d’élément Lookup .

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::operator [].

Classe Fonction membre
CMapPtrToPtr void*& operator[](void *key );
CMapPtrToWord WORD& operator[](void *key );
CMapStringToPtr void*& operator[](lpctstr key );
CMapStringToString CString& operator[](lpctstr key );
CMapWordToOb CObject*& operator[](word key );
CMapWordToPtr void*& operator[](word key );

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;

map[_T("Bart")] = new CAge(13);
map[_T("Lisa")] = new CAge(11);
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("Operator [] example: ") << &map << _T("\n");
#endif

Les résultats de ce programme sont les suivants :

Operator [] example: A CMapStringToOb with 2 elements
[Lisa] = a CAge at $4A02 11
[Bart] = a CAge at $497E 13

CMapStringToOb::RemoveAll

Supprime tous les éléments de cette carte et détruit les CString objets clés.

void RemoveAll();

Notes

Les CObject objets référencés par chaque clé ne sont pas détruits. La RemoveAll fonction peut provoquer des fuites de mémoire si vous ne vérifiez pas que les objets référencés sont détruits CObject .

La fonction fonctionne correctement si la carte est déjà vide.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::RemoveAll.

Classe Fonction membre
CMapPtrToPtr void RemoveAll();
CMapPtrToWord void RemoveAll();
CMapStringToPtr void RemoveAll();
CMapStringToString void RemoveAll();
CMapWordToOb void RemoveAll();
CMapWordToPtr void RemoveAll();

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

{
   CMapStringToOb map;

   CAge age1(13); // Two objects on the stack
   CAge age2(36);
   map.SetAt(_T("Bart"), &age1);
   map.SetAt(_T("Homer"), &age2);
   ASSERT(map.GetCount() == 2);
   map.RemoveAll(); // CObject pointers removed; objects not removed.
   ASSERT(map.GetCount() == 0);
   ASSERT(map.IsEmpty());
} // The two CAge objects are deleted when they go out of scope.

CMapStringToOb::RemoveKey

Recherche l’entrée de carte correspondant à la clé fournie ; ensuite, si la clé est trouvée, supprime l’entrée.

BOOL RemoveKey(LPCTSTR key);

Paramètres

key
Spécifie la chaîne utilisée pour la recherche de carte.

Valeur de retour

Différent de zéro si l’entrée a été trouvée et supprimée avec succès ; sinon 0.

Notes

Cela peut entraîner des fuites de mémoire si l’objet CObject n’est pas supprimé ailleurs.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::RemoveKey.

Classe Fonction membre
CMapPtrToPtr BOOL RemoveKey( void *key );
CMapPtrToWord BOOL RemoveKey( void *key );
CMapStringToPtr BOOL RemoveKey( LPCTSTR key );
CMapStringToString BOOL RemoveKey( LPCTSTR key );
CMapWordToOb BOOL RemoveKey( WORD key );
CMapWordToPtr BOOL RemoveKey( WORD key );

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Lisa"), new CAge(11));
map.SetAt(_T("Homer"), new CAge(36));
map.SetAt(_T("Marge"), new CAge(35));
map.RemoveKey(_T("Lisa")); // Memory leak: CAge object not
                           // deleted.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveKey example: ") << &map << _T("\n");
#endif

Les résultats de ce programme sont les suivants :

RemoveKey example: A CMapStringToOb with 3 elements
[Marge] = a CAge at $49A0 35
[Homer] = a CAge at $495E 36
[Bart] = a CAge at $4634 13

CMapStringToOb::SetAt

Le principal signifie d’insérer un élément dans une carte.

void SetAt(
    LPCTSTR key,
    CObject* newValue);

Paramètres

key
Spécifie la chaîne qui est la clé du nouvel élément.

newValue
Spécifie le CObject pointeur qui est la valeur du nouvel élément.

Notes

Tout d’abord, la clé est recherchée. Si la clé est trouvée, la valeur correspondante est modifiée ; sinon, un nouvel élément clé-valeur est créé.

Le tableau suivant présente d’autres fonctions membres similaires à CMapStringToOb::SetAt.

Classe Fonction membre
CMapPtrToPtr void SetAt( void *key , void *newValue );
CMapPtrToWord void SetAt( void *key , WORD newValue );
CMapStringToPtr void SetAt( LPCTSTR key , void *newValue );
CMapStringToString void SetAt( LPCTSTR key , LPCTSTR newValue );
CMapWordToOb void SetAt( WORD key , CObject *newValue );
CMapWordToPtr void SetAt( WORD key , void *newValue );

Exemple

Consultez CObList::CObList la liste de la CAge classe utilisée dans tous les exemples de collection.

CMapStringToOb map;
CAge *pa;

map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Lisa"), new CAge(11)); // Map contains 2
                                     // elements.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("before Lisa's birthday: ") << &map << _T("\n");
#endif
if (map.Lookup(_T("Lisa"), (CObject *&)pa))
{ // CAge 12 pointer replaces CAge 11 pointer.
   map.SetAt(_T("Lisa"), new CAge(12));
   delete pa; // Must delete CAge 11 to avoid memory leak.
}
#ifdef _DEBUG
afxDump << _T("after Lisa's birthday: ") << &map << _T("\n");
#endif

Les résultats de ce programme sont les suivants :

before Lisa's birthday: A CMapStringToOb with 2 elements
[Lisa] = a CAge at $493C 11
[Bart] = a CAge at $4654 13
after Lisa's birthday: A CMapStringToOb with 2 elements
[Lisa] = a CAge at $49C0 12
[Bart] = a CAge at $4654 13

Voir aussi

CObject Classe
Graphique hiérarchique
CMapPtrToPtr Classe
CMapPtrToWord Classe
CMapStringToPtr Classe
CMapStringToString Classe
CMapWordToOb Classe
CMapWordToPtr Classe