Share via


CRBMultiMap-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse vertegenwoordigt een toewijzingsstructuur waarmee elke sleutel kan worden gekoppeld aan meer dan één waarde, met behulp van een Red-Black binaire structuur.

Syntaxis

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

Parameterwaarden

K
Het type sleutelelement.

V
Het waardeelementtype.

KTraits
De code die wordt gebruikt om sleutelelementen te kopiëren of te verplaatsen. Zie CElementTraits Class voor meer informatie.

VTraits
De code die wordt gebruikt voor het kopiëren of verplaatsen van waarde-elementen.

Leden

Openbare constructors

Naam Description
CRBMultiMap::CRBMultiMap De constructor.
CRBMultiMap::~CRBMultiMap De destructor.

Openbare methoden

Naam Description
CRBMultiMap::FindFirstWithKey Roep deze methode aan om de positie van het eerste element met een bepaalde sleutel te vinden.
CRBMultiMap::GetNextValueWithKey Roep deze methode aan om de waarde op te halen die is gekoppeld aan een bepaalde sleutel en werk de positiewaarde bij.
CRBMultiMap::GetNextWithKey Roep deze methode aan om het element op te halen dat is gekoppeld aan een bepaalde sleutel en de positiewaarde bij te werken.
CRBMultiMap::Insert Roep deze methode aan om een elementpaar in de kaart in te voegen.
CRBMultiMap::RemoveKey Roep deze methode aan om alle sleutel-/waarde-elementen voor een bepaalde sleutel te verwijderen.

Opmerkingen

CRBMultiMap biedt ondersteuning voor een toewijzingsmatrix van een bepaald type, het beheren van een geordende matrix met sleutelelementen en waarden. In tegenstelling tot de CRBMap-klasse kan elke sleutel worden gekoppeld aan meer dan één waarde.

Elementen (bestaande uit een sleutel en een waarde) worden opgeslagen in een binaire structuur, met behulp van de methode CRBMultiMap::Insert . Elementen kunnen worden verwijderd met behulp van de methode CRBMultiMap::RemoveKey , waarmee alle elementen worden verwijderd die overeenkomen met de opgegeven sleutel.

Doorkruising van de boom wordt mogelijk gemaakt met methoden zoals CRBTree::GetHeadPosition, CRBTree::GetNext en CRBTree::GetNextValue. Het openen van de mogelijk meerdere waarden per sleutel is mogelijk met behulp van de methoden CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey en CRBMultiMap::GetNextWithKey . Zie het voorbeeld voor CRBMultiMap::CRBMultiMap voor een illustratie hiervan in de praktijk.

De KTraits - en VTraits-parameters zijn eigenschappenklassen die aanvullende code bevatten die nodig is om elementen te kopiëren of te verplaatsen.

CRBMultiMap is afgeleid van CRBTree, waarmee een binaire structuur wordt geïmplementeerd met behulp van het Red-Black algoritme. Een alternatief voor CRBMultiMap en CRBMap wordt aangeboden door de CAtlMap-klasse . Wanneer er slechts een klein aantal elementen moet worden opgeslagen, kunt u in plaats daarvan de klasse CSimpleMap gebruiken.

Zie ATL-verzamelingsklassen voor een volledigere bespreking van de verschillende verzamelingsklassen en hun functies en prestatiekenmerken.

Overnamehiërarchie

CRBTree

CRBMultiMap

Requirements

Koptekst: atlcoll.h

CRBMultiMap::CRBMultiMap

De constructor.

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

Parameterwaarden

nBlockSize
De blokgrootte.

Opmerkingen

De parameter nBlockSize is een meting van de hoeveelheid geheugen die is toegewezen wanneer een nieuw element is vereist. Grotere blokgrootten verminderen aanroepen naar geheugentoewijzingsroutines, maar gebruiken meer resources. Met de standaardwaarde wordt ruimte voor 10 elementen tegelijk toegewezen.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

Example

// 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

De destructor.

~CRBMultiMap() throw();

Opmerkingen

Alle toegewezen resources worden vrijgemaakt.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

CRBMultiMap::FindFirstWithKey

Roep deze methode aan om de positie van het eerste element met een bepaalde sleutel te vinden.

POSITION FindFirstWithKey(KINARGTYPE key) const throw();

Parameterwaarden

sleutel
Hiermee geeft u de sleutel op waarmee het te vinden element wordt geïdentificeerd.

Retourwaarde

Retourneert de POSITIE van het eerste sleutel-/waarde-element als de sleutel wordt gevonden, anders NULL.

Opmerkingen

Een sleutel in de CRBMultiMap sleutel kan een of meer gekoppelde waarden hebben. Deze methode geeft de positiewaarde op van de eerste waarde (die in feite de enige waarde kan zijn) die aan die specifieke sleutel is gekoppeld. De geretourneerde positiewaarde kan vervolgens worden gebruikt met CRBMultiMap::GetNextValueWithKey of CRBMultiMap::GetNextWithKey om de waarde te verkrijgen en de positie bij te werken.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

Example

Zie het voorbeeld voor CRBMultiMap::CRBMultiMap.

CRBMultiMap::GetNextValueWithKey

Roep deze methode aan om de waarde op te halen die is gekoppeld aan een bepaalde sleutel en de positiewaarde bij te werken.

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

Parameterwaarden

Pos
De positiewaarde, verkregen met een aanroep naar CRBMultiMap::FindFirstWithKey of CRBMultiMap::GetNextWithKey, of een eerdere aanroep naar GetNextValueWithKey.

sleutel
Hiermee geeft u de sleutel op waarmee het te vinden element wordt geïdentificeerd.

Retourwaarde

Retourneert het elementpaar dat is gekoppeld aan de opgegeven sleutel.

Opmerkingen

De positiewaarde wordt bijgewerkt om te verwijzen naar de volgende waarde die aan de sleutel is gekoppeld. Als er geen waarden meer bestaan, wordt de positiewaarde ingesteld op NULL.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

Example

Zie het voorbeeld voor CRBMultiMap::CRBMultiMap.

CRBMultiMap::GetNextWithKey

Roep deze methode aan om het element op te halen dat is gekoppeld aan een bepaalde sleutel en de positiewaarde bij te werken.

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

Parameterwaarden

Pos
De positiewaarde, verkregen met een aanroep naar CRBMultiMap::FindFirstWithKey of CRBMultiMap::GetNextValueWithKey, of een eerdere aanroep naar GetNextWithKey.

sleutel
Hiermee geeft u de sleutel op waarmee het te vinden element wordt geïdentificeerd.

Retourwaarde

Retourneert het volgende CRBTree::CPair Class-element dat is gekoppeld aan de opgegeven sleutel.

Opmerkingen

De positiewaarde wordt bijgewerkt om te verwijzen naar de volgende waarde die aan de sleutel is gekoppeld. Als er geen waarden meer bestaan, wordt de positiewaarde ingesteld op NULL.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

CRBMultiMap::Insert

Roep deze methode aan om een elementpaar in de kaart in te voegen.

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

Parameterwaarden

sleutel
De sleutelwaarde die moet worden toegevoegd aan het CRBMultiMap object.

value
De waarde die moet worden toegevoegd aan het CRBMultiMap object, gekoppeld aan de sleutel.

Retourwaarde

Retourneert de positie van het sleutel-waarde-elementpaar in het CRBMultiMap object.

Opmerkingen

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

Example

Zie het voorbeeld voor CRBMultiMap::CRBMultiMap.

CRBMultiMap::RemoveKey

Roep deze methode aan om alle sleutel-/waarde-elementen voor een bepaalde sleutel te verwijderen.

size_t RemoveKey(KINARGTYPE key) throw();

Parameterwaarden

sleutel
Hiermee geeft u de sleutel op waarmee de elementen worden geïdentificeerd die moeten worden verwijderd.

Retourwaarde

Retourneert het aantal waarden dat is gekoppeld aan de opgegeven sleutel.

Opmerkingen

RemoveKey verwijdert alle sleutel-/waarde-elementen met een sleutel die overeenkomt met de sleutel.

Raadpleeg de documentatie voor de basisklasse CRBTree voor informatie over de andere beschikbare methoden.

Example

Zie het voorbeeld voor CRBMultiMap::CRBMultiMap.

Zie ook

CRBTree-klasse
CAtlMap-klasse
CRBMap-klasse
Overzicht van klassen