Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
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