Udostępnij za pośrednictwem


Klasa CRBMultiMap

Ta klasa reprezentuje strukturę mapowania, która umożliwia skojarzenie każdego klucza z więcej niż jedną wartością przy użyciu drzewa binarnego Red-Black.

Składnia

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

Parametry

K
Typ kluczowego elementu.

V
Typ elementu wartości.

KTraits
Kod używany do kopiowania lub przenoszenia kluczowych elementów. Aby uzyskać więcej informacji, zobacz Klasa CElementTraits.

VTraits
Kod używany do kopiowania lub przenoszenia elementów wartości.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CRBMultiMap::CRBMultiMap Konstruktor.
CRBMultiMap::~CRBMultiMap Destruktora.

Metody publiczne

Nazwa/nazwisko opis
CRBMultiMap::FindFirstWithKey Wywołaj tę metodę, aby znaleźć położenie pierwszego elementu przy użyciu danego klucza.
CRBMultiMap::GetNextValueWithKey Wywołaj tę metodę, aby uzyskać wartość skojarzoną z danym kluczem i zaktualizować wartość pozycji.
CRBMultiMap::GetNextWithKey Wywołaj tę metodę, aby pobrać element skojarzony z danym kluczem i zaktualizować wartość pozycji.
CRBMultiMap::Insert Wywołaj tę metodę, aby wstawić parę elementów do mapy.
CRBMultiMap::RemoveKey Wywołaj tę metodę, aby usunąć wszystkie elementy klucza/wartości dla danego klucza.

Uwagi

CRBMultiMap Zapewnia obsługę tablicy mapowania dowolnego typu, zarządzania uporządkowaną tablicą kluczowych elementów i wartości. W przeciwieństwie do klasy CRBMap każdy klucz może być skojarzony z więcej niż jedną wartością.

Elementy (składające się z klucza i wartości) są przechowywane w strukturze drzewa binarnego przy użyciu metody CRBMultiMap::Insert . Elementy można usunąć przy użyciu metody CRBMultiMap::RemoveKey , która usuwa wszystkie elementy zgodne z danym kluczem.

Przechodzenie drzewa jest możliwe za pomocą metod, takich jak CRBTree::GetHeadPosition, CRBTree::GetNext i CRBTree::GetNextValue. Uzyskanie dostępu do potencjalnie wielu wartości na klucz jest możliwe przy użyciu metod CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey i CRBMultiMap::GetNextWithKey . Zobacz przykład CRBMultiMap::CRBMultiMap , aby zapoznać się z ilustracją tego w praktyce.

Parametry KTraits i VTraits to klasy cech, które zawierają dowolny dodatkowy kod potrzebny do kopiowania lub przenoszenia elementów.

CRBMultiMap pochodzi z obiektu CRBTree, który implementuje drzewo binarne przy użyciu algorytmu Red-Black. Alternatywa dla CRBMultiMap klasy CRBMap CAtlMap jest oferowana przez klasę CAtlMap . Jeśli należy przechowywać tylko niewielką liczbę elementów, rozważ użycie klasy CSimpleMap .

Aby zapoznać się z bardziej kompletnym omówieniem różnych klas kolekcji oraz ich cech i cech wydajności, zobacz Klasy kolekcji ATL.

Hierarchia dziedziczenia

CRBTree

CRBMultiMap

Wymagania

Nagłówek: atlcoll.h

CRBMultiMap::CRBMultiMap

Konstruktor.

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

Parametry

nBlockSize
Rozmiar bloku.

Uwagi

Parametr nBlockSize jest miarą ilości pamięci przydzielonej, gdy jest wymagany nowy element. Większe rozmiary bloków zmniejszają liczbę wywołań procedur alokacji pamięci, ale korzystają z większej liczby zasobów. Wartość domyślna spowoduje przydzielenie miejsca dla 10 elementów naraz.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

Przykład

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

Destruktora.

~CRBMultiMap() throw();

Uwagi

Zwalnia wszystkie przydzielone zasoby.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

CRBMultiMap::FindFirstWithKey

Wywołaj tę metodę, aby znaleźć położenie pierwszego elementu przy użyciu danego klucza.

POSITION FindFirstWithKey(KINARGTYPE key) const throw();

Parametry

key
Określa klucz, który identyfikuje element do znalezienia.

Wartość zwracana

Zwraca pozycję pierwszego elementu klucz/wartość, jeśli klucz zostanie znaleziony, wartość NULL w przeciwnym razie.

Uwagi

Klucz w obiekcie CRBMultiMap może mieć co najmniej jedną skojarzona wartość. Ta metoda zapewni wartość pozycji pierwszej wartości (która w rzeczywistości może być jedyną wartością) skojarzoną z tym konkretnym kluczem. Zwrócona wartość pozycji może być następnie używana z CRBMultiMap::GetNextValueWithKey lub CRBMultiMap::GetNextWithKey , aby uzyskać wartość i zaktualizować położenie.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

Przykład

Zobacz przykład CRBMultiMap::CRBMultiMap.

CRBMultiMap::GetNextValueWithKey

Wywołaj tę metodę, aby uzyskać wartość skojarzoną z danym kluczem i zaktualizować wartość pozycji.

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

Parametry

pozytyw
Wartość pozycji uzyskana za pomocą wywołania metody CRBMultiMap::FindFirstWithKey lub CRBMultiMap::GetNextWithKey lub poprzedniego wywołania metody GetNextValueWithKey.

key
Określa klucz, który identyfikuje element do znalezienia.

Wartość zwracana

Zwraca parę elementów skojarzona z danym kluczem.

Uwagi

Wartość pozycji jest aktualizowana tak, aby wskazywała następną wartość skojarzoną z kluczem. Jeśli nie ma więcej wartości, wartość pozycji jest ustawiona na wartość NULL.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

Przykład

Zobacz przykład CRBMultiMap::CRBMultiMap.

CRBMultiMap::GetNextWithKey

Wywołaj tę metodę, aby pobrać element skojarzony z danym kluczem i zaktualizować wartość pozycji.

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

Parametry

pozytyw
Wartość pozycji uzyskana za pomocą wywołania CRBMultiMap ::FindFirstWithKey lub CRBMultiMap::GetNextValueWithKey lub poprzedniego wywołania metody GetNextWithKey.

key
Określa klucz, który identyfikuje element do znalezienia.

Wartość zwracana

Zwraca następny element klasy CRBTree::CPair skojarzony z danym kluczem.

Uwagi

Wartość pozycji jest aktualizowana tak, aby wskazywała następną wartość skojarzoną z kluczem. Jeśli nie ma więcej wartości, wartość pozycji jest ustawiona na wartość NULL.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

CRBMultiMap::Insert

Wywołaj tę metodę, aby wstawić parę elementów do mapy.

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

Parametry

key
Wartość klucza, która ma zostać dodana do CRBMultiMap obiektu.

wartość
Wartość do dodania do obiektu skojarzonego CRBMultiMap z kluczem.

Wartość zwracana

Zwraca położenie pary elementu klucz/wartość w CRBMultiMap obiekcie.

Uwagi

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

Przykład

Zobacz przykład CRBMultiMap::CRBMultiMap.

CRBMultiMap::RemoveKey

Wywołaj tę metodę, aby usunąć wszystkie elementy klucza/wartości dla danego klucza.

size_t RemoveKey(KINARGTYPE key) throw();

Parametry

key
Określa klucz, który identyfikuje elementy do usunięcia.

Wartość zwracana

Zwraca liczbę wartości skojarzonych z danym kluczem.

Uwagi

RemoveKey Usuwa wszystkie elementy klucza/wartości, które mają klucz zgodny z kluczem.

Zapoznaj się z dokumentacją klasy bazowej CRBTree , aby uzyskać informacje na temat innych dostępnych metod.

Przykład

Zobacz przykład CRBMultiMap::CRBMultiMap.

Zobacz też

Klasa CRBTree
Klasa CAtlMap
Klasa CRBMap
Omówienie klasy