Freigeben über


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

CRBTree

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