Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En ordlistesamlingsklass som mappar unika CString objekt till CObject pekare.
Syntax
class CMapStringToOb : public CObject
Medlemmar
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
CMapStringToOb::CMapStringToOb |
Konstruktor. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
CMapStringToOb::GetCount |
Returnerar antalet element i den här kartan. |
CMapStringToOb::GetHashTableSize |
Avgör det aktuella antalet element i hash-tabellen. |
CMapStringToOb::GetNextAssoc |
Hämtar nästa element för iterering. |
CMapStringToOb::GetSize |
Returnerar antalet element i den här kartan. |
CMapStringToOb::GetStartPosition |
Returnerar positionen för det första elementet. |
CMapStringToOb::HashKey |
Beräknar hash-värdet för en angiven nyckel. |
CMapStringToOb::InitHashTable |
Initierar hash-tabellen. |
CMapStringToOb::IsEmpty |
Tester för villkoret tom mappning (inga element). |
CMapStringToOb::Lookup |
Söker upp en tomrumspekare baserat på tomrumspekarnyckeln. Pekarvärdet, inte den entitet som det pekar på, används för nyckeljämförelsen. |
CMapStringToOb::LookupKey |
Returnerar en referens till nyckeln som är associerad med det angivna nyckelvärdet. |
CMapStringToOb::RemoveAll |
Tar bort alla element från den här kartan. |
CMapStringToOb::RemoveKey |
Tar bort ett element som anges av en nyckel. |
CMapStringToOb::SetAt |
Infogar ett element i kartan. ersätter ett befintligt element om en matchande nyckel hittas. |
Offentliga operatörer
| Namn | Beskrivning |
|---|---|
CMapStringToOb::operator [ ] |
Infogar ett element i kartan – operatorersättning för SetAt. |
Anmärkningar
När du har infogat ett CString- CObject* par (element) i kartan kan du effektivt hämta eller ta bort paret med hjälp av en sträng eller ett CString värde som en nyckel. Du kan också iterera över alla element på kartan.
En variabel av typen POSITION används för alternativ poståtkomst i alla kartvariationer. Du kan använda en POSITION för att "komma ihåg" en post och iterera via kartan. Du kanske tror att den här iterationen är sekventiell efter nyckelvärde. Det är det inte. Sekvensen av hämtade element är obestämd.
CMapStringToOb innehåller makrot IMPLEMENT_SERIAL för att stödja serialisering och dumpning av dess element. Varje element serialiseras i tur och ordning om en karta lagras i ett arkiv, antingen med operatorn overloaded insertion ( <<) eller med Serialize medlemsfunktionen.
Om du behöver en diagnostikdump av de enskilda elementen på kartan ( CString värdet och CObject innehållet) måste du ange djupet i dumpkontexten till 1 eller större.
När ett CMapStringToOb objekt tas bort eller när dess element tas bort tas objekten CString och pekarna CObject bort. Objekten som pekarna refererar till CObject förstörs inte.
Kartklasshärledning liknar listhärledning. Se artikeln Samlingar för en illustration av härledning av en speciallistklass.
Arvshierarki
CMapStringToOb
Kravspecifikation
rubrik:afxcoll.h
CMapStringToOb::CMapStringToOb
Konstruerar en tom CString-to-map CObject* .
CMapStringToOb(INT_PTR nBlockSize = 10);
Parameterar
nBlockSize
Anger minnesallokeringskornigheten för att utöka kartan.
Anmärkningar
När kartan växer allokeras minne i enheter med nBlockSize poster.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb:: CMapStringToOb.
| Klass | Medlemsfunktion |
|---|---|
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 ); |
Exempel
CMapStringToOb map(20); // Map on the stack with blocksize of 20
CMapStringToOb *pm = new CMapStringToOb; // Map on the heap
// with default blocksize
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
CMapStringToOb::GetCount
Avgör hur många element som finns på kartan.
INT_PTR GetCount() const;
Returvärde
Antalet element i den här kartan.
Anmärkningar
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::GetCount.
| Klass | Medlemsfunktion |
|---|---|
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; |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
CMapStringToOb map;
map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Homer"), new CAge(36));
ASSERT(map.GetCount() == 2);
CMapStringToOb::GetHashTableSize
Avgör det aktuella antalet element i hash-tabellen.
UINT GetHashTableSize() const;
Returvärde
Returnerar antalet element i hash-tabellen.
Anmärkningar
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::GetHashTableSize.
| Klass | Medlemsfunktion |
|---|---|
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
Hämtar kartelementet på rNextPositionoch uppdaterar rNextPosition sedan för att referera till nästa element på kartan.
void GetNextAssoc(
POSITION& rNextPosition,
CString& rKey,
CObject*& rValue) const;
Parameterar
rNextPosition
Anger en referens till ett POSITION-värde som returnerades av ett tidigare GetNextAssoc eller GetStartPosition anrop.
rKey
Anger den returnerade nyckeln för det hämtade elementet (en sträng).
rValue
Anger det returnerade värdet för det hämtade elementet (en CObject pekare). Mer information om den här parametern finns i Kommentarer .
Anmärkningar
Den här funktionen är mest användbar för iterering genom alla element på kartan. Observera att positionssekvensen inte nödvändigtvis är samma som nyckelvärdesekvensen.
Om det hämtade elementet är det sista i kartan är det nya värdet rNextPosition för inställt på NULL.
För parametern rValue ska du se till att omvandla objekttypen till CObject*&, vilket är vad kompilatorn kräver, som du ser i följande exempel:
CObject *ob;
map.GetNextAssoc(pos, key, (CObject *&)ob);
Detta gäller GetNextAssoc inte för kartor baserade på mallar.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::GetNextAssoc.
| Klass | Medlemsfunktion |
|---|---|
| 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; |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
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
}
Resultatet från det här programmet är följande:
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
Returnerar antalet kartelement.
INT_PTR GetSize() const;
Returvärde
Antalet objekt på kartan.
Anmärkningar
Anropa den här metoden för att hämta antalet element på kartan.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::GetSize.
| Klass | Medlemsfunktion |
|---|---|
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; |
Exempel
CMapStringToOb map;
map.SetAt(_T("Bart"), new CAge(13));
map.SetAt(_T("Homer"), new CAge(36));
ASSERT(map.GetSize() == 2);
CMapStringToOb::GetStartPosition
Startar en map-iteration genom att returnera ett POSITION värde som kan skickas till ett GetNextAssoc anrop.
POSITION GetStartPosition() const;
Returvärde
Ett POSITION värde som anger en startposition för iterering av kartan, eller NULL om kartan är tom.
Anmärkningar
Iterationssekvensen är inte förutsägbar. Därför har det "första elementet på kartan" ingen särskild betydelse.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::GetStartPosition.
| Klass | Medlemsfunktion |
|---|---|
CMapPtrToPtr |
POSITION GetStartPosition() const; |
CMapPtrToWord |
POSITION GetStartPosition() const; |
CMapStringToPtr |
POSITION GetStartPosition() const; |
CMapStringToString |
POSITION GetStartPosition() const; |
CMapWordToOb |
POSITION GetStartPosition() const; |
CMapWordToPtr |
POSITION GetStartPosition() const; |
Exempel
Se exemplet för CMapStringToOb::GetNextAssoc.
CMapStringToOb::HashKey
Beräknar hash-värdet för en angiven nyckel.
UINT HashKey(LPCTSTR key) const;
Parameterar
key
Nyckeln vars hashvärde ska beräknas.
Returvärde
Nyckelns hashvärde
Anmärkningar
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::HashKey.
| Klass | Medlemsfunktion |
|---|---|
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
Initierar hash-tabellen.
void InitHashTable(
UINT hashSize,
BOOL bAllocNow = TRUE);
Parameterar
hashSize
Antal poster i hash-tabellen.
bAllocNow
Om TRUE, allokerar hash-tabellen vid initiering, annars allokeras tabellen när det behövs.
Anmärkningar
För bästa prestanda bör hashtabellens storlek vara ett primärt tal. För att minimera kollisioner bör storleken vara ungefär 20 procent större än den största förväntade datamängden.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::InitHashTable.
| Klass | Medlemsfunktion |
|---|---|
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
Avgör om kartan är tom.
BOOL IsEmpty() const;
Returvärde
Nonzero om den här kartan inte innehåller några element; annars 0.
Exempel
Se exemplet för RemoveAll.
Anmärkningar
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb:: IsEmpty.
| Klass | Medlemsfunktion |
|---|---|
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
Returnerar en CObject pekare baserat på ett CString värde.
BOOL Lookup(
LPCTSTR key,
CObject*& rValue) const;
Parameterar
key
Anger strängnyckeln som identifierar elementet som ska letas upp.
rValue
Anger det returnerade värdet från uppslagselementet.
Returvärde
Nonzero om elementet hittades; annars 0.
Anmärkningar
Lookup använder en hashalgoritm för att snabbt hitta kartelementet med en nyckel som matchar exakt (CString värde).
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::LookUp.
| Klass | Medlemsfunktion |
|---|---|
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; |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
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
Returnerar en referens till nyckeln som är associerad med det angivna nyckelvärdet.
BOOL LookupKey(
LPCTSTR key,
LPCTSTR& rKey) const;
Parameterar
key
Anger strängnyckeln som identifierar elementet som ska letas upp.
rKey
Referensen till den associerade nyckeln.
Returvärde
Nonzero om nyckeln hittades; annars 0.
Anmärkningar
Att använda en referens till en nyckel är osäkert om det används efter att det associerade elementet har tagits bort från kartan eller efter att kartan förstördes.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb:: LookupKey.
| Klass | Medlemsfunktion |
|---|---|
CMapStringToPtr |
BOOL LookupKey( LPCTSTR key , LPCTSTR& rKey ) const; |
CMapStringToString |
BOOL LookupKey( LPCTSTR key , LPCTSTR& rKey ) const; |
CMapStringToOb::operator [ ]
En praktisk ersättning för SetAt medlemsfunktionen.
CObject*& operator[ ](lpctstr key);
Returvärde
En referens till en pekare till ett CObject objekt, eller NULL om kartan är tom eller key ligger utom räckhåll.
Anmärkningar
Därför kan den endast användas till vänster i en tilldelningssats (en l-value). Om det inte finns något kartelement med den angivna nyckeln skapas ett nytt element.
Det finns ingen "höger sida" (r-value) som motsvarar den här operatorn eftersom det finns en möjlighet att en nyckel kanske inte hittas på kartan.
Lookup Använd medlemsfunktionen för elementhämtning.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::operator [].
| Klass | Medlemsfunktion |
|---|---|
| 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 ); |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
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
Resultatet från det här programmet är följande:
Operator [] example: A CMapStringToOb with 2 elements
[Lisa] = a CAge at $4A02 11
[Bart] = a CAge at $497E 13
CMapStringToOb::RemoveAll
Tar bort alla element från den här kartan och förstör nyckelobjekten CString .
void RemoveAll();
Anmärkningar
Objekten CObject som refereras av varje nyckel förstörs inte. Funktionen RemoveAll kan orsaka minnesläckor om du inte ser till att de refererade CObject objekten förstörs.
Funktionen fungerar korrekt om kartan redan är tom.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::RemoveAll.
| Klass | Medlemsfunktion |
|---|---|
CMapPtrToPtr |
void RemoveAll(); |
CMapPtrToWord |
void RemoveAll(); |
CMapStringToPtr |
void RemoveAll(); |
CMapStringToString |
void RemoveAll(); |
CMapWordToOb |
void RemoveAll(); |
CMapWordToPtr |
void RemoveAll(); |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
{
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
Söker upp kartposten som motsvarar den angivna nyckeln. sedan, om nyckeln hittas, tar bort posten.
BOOL RemoveKey(LPCTSTR key);
Parameterar
key
Anger strängen som används för kartsökning.
Returvärde
Nonzero om posten hittades och togs bort. annars 0.
Anmärkningar
Detta kan orsaka minnesläckor om objektet CObject inte tas bort någon annanstans.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::RemoveKey.
| Klass | Medlemsfunktion |
|---|---|
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 ); |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
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
Resultatet från det här programmet är följande:
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
Det primära innebär att infoga ett element i en karta.
void SetAt(
LPCTSTR key,
CObject* newValue);
Parameterar
key
Anger strängen som är nyckeln för det nya elementet.
newValue
Anger den CObject pekare som är värdet för det nya elementet.
Anmärkningar
Först letas nyckeln upp. Om nyckeln hittas ändras motsvarande värde. annars skapas ett nytt nyckel/värde-element.
I följande tabell visas andra medlemsfunktioner som liknar CMapStringToOb::SetAt.
| Klass | Medlemsfunktion |
|---|---|
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 ); |
Exempel
Se CObList::CObList en lista över klassen CAge som används i alla samlingsexempel.
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
Resultatet från det här programmet är följande:
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
Se även
CObject klass
hierarkidiagram
CMapPtrToPtr klass
CMapPtrToWord klass
CMapStringToPtr klass
CMapStringToString klass
CMapWordToOb klass
CMapWordToPtr klass