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