CRBMap-Klasse
Diese Klasse stellt eine Zuordnungsstruktur mithilfe einer Rot-Schwarz-Binärstruktur dar.
Syntax
template <typename K,
typename V,
class KTraits = CElementTraits<K>,
class VTraits = CElementTraits<V>>
class CRBMap : public CRBTree<K, V, KTraits, VTraits>
Parameter
K
Der Schlüsselelementtyp.
B
Der Wertelementtyp.
KTraits
Der Code zum Kopieren oder Verschieben von Schlüsselelementen. Weitere Details finden Sie unter CElementTraits Class .
VTraits
Der Code zum Kopieren oder Verschieben von Wertelementen.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CRBMap::CRBMap | Der Konstruktor. |
CRBMap::~CRBMap | Der Destruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CRBMap::Lookup | Rufen Sie diese Methode auf, um Schlüssel oder Werte im CRBMap Objekt nachzuschlagen. |
CRBMap::RemoveKey | Rufen Sie diese Methode auf, um ein Element aus dem CRBMap Objekt zu entfernen, je nach Schlüssel. |
CRBMap::SetAt | Rufen Sie diese Methode auf, um ein Elementpaar in die Karte einzufügen. |
Hinweise
CRBMap
bietet Unterstützung für ein Zuordnungsarray eines bestimmten Typs, wobei ein sortiertes Array von Schlüsselelementen und deren zugeordneten Werten verwaltet wird. Jeder Schlüssel kann nur einen zugeordneten Wert aufweisen. Elemente (bestehend aus einem Schlüssel und einem Wert) werden mithilfe der CRBMap::SetAt-Methode in einer binären Struktur gespeichert. Elemente können mithilfe der CRBMap::RemoveKey-Methode entfernt werden, die das Element mit dem angegebenen Schlüsselwert löscht.
Das Durchlaufen der Struktur wird mit Methoden wie CRBTree::GetHeadPosition, CRBTree::GetNext und CRBTree::GetNextValue ermöglicht.
Die Parameter "KTraits " und "VTraits " sind Eigenschaftenklassen, die zusätzlichen Code enthalten, der zum Kopieren oder Verschieben von Elementen erforderlich ist.
CRBMap
wird von CRBTree abgeleitet, das eine binäre Struktur mithilfe des Red-Black-Algorithmus implementiert. CRBMultiMap ist eine Variation, die mehrere Werte für jeden Schlüssel zulässt. Es ist auch abgeleitet von CRBTree
, und so teilt viele Features mit CRBMap
.
Eine Alternative zu beiden CRBMap
und CRBMultiMap
wird von der CAtlMap-Klasse angeboten. Wenn nur eine kleine Anzahl von Elementen gespeichert werden muss, sollten Sie stattdessen die CSimpleMap-Klasse verwenden.
Eine ausführlichere Erläuterung der verschiedenen Sammlungsklassen und deren Features und Leistungsmerkmale finden Sie unter ATL-Sammlungsklassen.
Vererbungshierarchie
CRBMap
Anforderungen
Kopfzeile: atlcoll.h
CRBMap::CRBMap
Der Konstruktor.
explicit CRBMap(size_t nBlockSize = 10) throw();
Parameter
nBlockSize
Die Blockgröße.
Hinweise
Der nBlockSize-Parameter ist ein Maß für die Menge des Arbeitsspeichers, der zugewiesen wird, wenn ein neues Element erforderlich ist. Größere Blockgrößen reduzieren Aufrufe an Speicherzuweisungsroutinen, verwenden jedoch weitere Ressourcen. Standardmäßig wird jeweils Platz für 10 Elemente zugewiesen.
Informationen zu den anderen verfügbaren Methoden finden Sie in der Dokumentation zur Basisklasse CRBTree .
Beispiel
// Define a map object which has an
// integer key, a double value, and a
// block size of 5
CRBMap<int, double> myMap(5);
CRBMap::~CRBMap
Der Destruktor.
~CRBMap() throw();
Hinweise
Gibt alle zugeordneten Ressourcen frei.
Informationen zu den anderen verfügbaren Methoden finden Sie in der Dokumentation zur Basisklasse CRBTree .
CRBMap::Lookup
Rufen Sie diese Methode auf, um Schlüssel oder Werte im CRBMap
Objekt nachzuschlagen.
bool Lookup(KINARGTYPE key, VOUTARGTYPE value) const throw(...);
const CPair* Lookup(KINARGTYPE key) const throw();
CPair* Lookup(KINARGTYPE key) throw();
Parameter
key
Gibt den Schlüssel an, der das element identifiziert, das nachschlagen soll.
value
Variable, die den Nachschlagewert empfängt.
Rückgabewert
Die erste Form der Methode gibt "true" zurück, wenn der Schlüssel gefunden wird, andernfalls "false". Die zweite und dritte Form geben einen Zeiger auf ein CPair zurück.
Hinweise
Informationen zu den anderen verfügbaren Methoden finden Sie in der Dokumentation zur Basisklasse CRBTree .
Beispiel
// Look up the value for a key of 0
double v;
myMap.Lookup(0,v);
CRBMap::RemoveKey
Rufen Sie diese Methode auf, um ein Element aus dem CRBMap
Objekt zu entfernen, je nach Schlüssel.
bool RemoveKey(KINARGTYPE key) throw();
Parameter
key
Der Schlüssel, der dem Elementpaar entspricht, das Sie entfernen möchten.
Rückgabewert
Gibt true zurück, wenn der Schlüssel gefunden und entfernt wird, false bei Fehler.
Hinweise
Informationen zu den anderen verfügbaren Methoden finden Sie in der Dokumentation zur Basisklasse CRBTree .
Beispiel
// Remove an element, based on the key of 0
ATLVERIFY(myMap.RemoveKey(0) == true);
CRBMap::SetAt
Rufen Sie diese Methode auf, um ein Elementpaar in die Karte einzufügen.
POSITION SetAt(
KINARGTYPE key,
VINARGTYPE value) throw(...);
Parameter
key
Der Schlüsselwert, der dem CRBMap
Objekt hinzugefügt werden soll.
value
Der Wert, der dem CRBMap
Objekt hinzugefügt werden soll.
Rückgabewert
Gibt die Position des Schlüssel-Wert-Elementpaars im CRBMap
Objekt zurück.
Hinweise
SetAt
ersetzt ein vorhandenes Element, wenn ein übereinstimmende Schlüssel gefunden wird. Wenn der Schlüssel nicht gefunden wird, wird ein neues Schlüssel-Wert-Paar erstellt.
Informationen zu den anderen verfügbaren Methoden finden Sie in der Dokumentation zur Basisklasse CRBTree .
Beispiel
// Add an element to the map, with a key of 0
myMap.SetAt(0,1.1);
Siehe auch
CRBTree-Klasse
CAtlMap-Klasse
CRBMultiMap-Klasse
Klassenübersicht