Aracılığıyla paylaş


CRBMultiMap Sınıfı

Bu sınıf, kırmızı-siyah ikili ağaç kullanılarak her anahtarın birden fazla değerle ilişkilendirilmesine izin veren bir eşleme yapısını temsil eder.

Sözdizimi

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

Parametreler

K
Anahtar öğe türü.

V
Değer öğesi türü.

KTraits
Anahtar öğeleri kopyalamak veya taşımak için kullanılan kod. Daha fazla ayrıntı için bkz . CElementTraits Sınıfı .

VTraits
Değer öğelerini kopyalamak veya taşımak için kullanılan kod.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CRBMultiMap::CRBMultiMap Oluşturucu.
CRBMultiMap::~CRBMultiMap Yok edici.

Genel Yöntemler

Veri Akışı Adı Açıklama
CRBMultiMap::FindFirstWithKey Belirli bir anahtara sahip ilk öğenin konumunu bulmak için bu yöntemi çağırın.
CRBMultiMap::GetNextValueWithKey Belirli bir anahtarla ilişkili değeri almak ve konum değerini güncelleştirmek için bu yöntemi çağırın.
CRBMultiMap::GetNextWithKey Belirli bir anahtarla ilişkili öğeyi almak ve konum değerini güncelleştirmek için bu yöntemi çağırın.
CRBMultiMap::Insert Eşlemeye bir öğe çifti eklemek için bu yöntemi çağırın.
CRBMultiMap::RemoveKey Belirli bir anahtarın tüm anahtar/değer öğelerini kaldırmak için bu yöntemi çağırın.

Açıklamalar

CRBMultiMap , belirli bir türe sahip eşleme dizisi için destek sağlar ve sıralı bir anahtar öğe ve değer dizisini yönetir. CRBMap sınıfından farklı olarak, her anahtar birden fazla değerle ilişkilendirilebilir.

Öğeler (anahtar ve değerden oluşan) CRBMultiMap::Insert yöntemi kullanılarak ikili ağaç yapısında depolanır. Öğeler, verilen anahtarla eşleşen tüm öğeleri silen CRBMultiMap::RemoveKey yöntemi kullanılarak kaldırılabilir.

CrBTree::GetHeadPosition, CRBTree::GetNext ve CRBTree::GetNextValue gibi yöntemlerle ağaç geçişi yapılabilir. CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey ve CRBMultiMap::GetNextWithKey yöntemleri kullanılarak anahtar başına birden çok değere erişmek mümkündür. Pratikte bunun bir çizimi için CRBMultiMap::CRBMultiMap örneğine bakın.

KTraits ve VTraits parametreleri, öğeleri kopyalamak veya taşımak için gereken ek kodları içeren nitelik sınıflarıdır.

CRBMultiMap, Kırmızı-Siyah algoritmasını kullanarak ikili ağaç uygulayan CRBTree'den türetilir. ve için CRBMultiMap CRBMap bir alternatif, CAtlMap sınıfı tarafından sunulur. Yalnızca az sayıda öğe depolanması gerektiğinde, bunun yerine CSimpleMap sınıfını kullanmayı göz önünde bulundurun.

Çeşitli koleksiyon sınıfları ve bunların özellikleri ile performans özellikleri hakkında daha ayrıntılı bilgi için bkz . ATL Koleksiyon Sınıfları.

Devralma Hiyerarşisi

CRBTree

CRBMultiMap

Gereksinimler

Üst bilgi: atlcoll.h

CRBMultiMap::CRBMultiMap

Oluşturucu.

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

Parametreler

nBlockSize
Blok boyutu.

Açıklamalar

nBlockSize parametresi, yeni bir öğe gerektiğinde ayrılan bellek miktarının ölçüsüdür. Daha büyük blok boyutları bellek ayırma yordamlarına yapılan çağrıları azaltır, ancak daha fazla kaynak kullanır. Varsayılan değer, aynı anda 10 öğe için alan ayırır.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

Örnek

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

Yok edici.

~CRBMultiMap() throw();

Açıklamalar

Ayrılan tüm kaynakları serbesttir.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

CRBMultiMap::FindFirstWithKey

Belirli bir anahtara sahip ilk öğenin konumunu bulmak için bu yöntemi çağırın.

POSITION FindFirstWithKey(KINARGTYPE key) const throw();

Parametreler

key
Bulunabilecek öğeyi tanımlayan anahtarı belirtir.

Dönüş Değeri

Anahtar bulunursa ilk anahtar/değer öğesinin POSITION değerini döndürür; aksi takdirde NULL olur.

Açıklamalar

içindeki bir anahtarın CRBMultiMap ilişkili bir veya daha fazla değeri olabilir. Bu yöntem, söz konusu anahtarla ilişkili ilk değerin konum değerini (aslında tek değer olabilir) sağlar. Daha sonra döndürülen konum değeri CRBMultiMap::GetNextValueWithKey veya CRBMultiMap::GetNextWithKey ile birlikte kullanılabilir.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

Örnek

CRBMultiMap::CRBMultiMap örneğine bakın.

CRBMultiMap::GetNextValueWithKey

Belirli bir anahtarla ilişkili değeri almak ve konum değerini güncelleştirmek için bu yöntemi çağırın.

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

Parametreler

Pos
CRBMultiMap::FindFirstWithKey veya CRBMultiMap::GetNextWithKey çağrısıyla veya önceki bir çağrısıyla GetNextValueWithKeyelde edilen konum değeri.

key
Bulunabilecek öğeyi tanımlayan anahtarı belirtir.

Dönüş Değeri

Verilen anahtarla ilişkili öğe çiftini döndürür.

Açıklamalar

Konum değeri, anahtarla ilişkilendirilmiş sonraki değere işaret etmek için güncelleştirilir. Başka değer yoksa, konum değeri NULL olarak ayarlanır.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

Örnek

CRBMultiMap::CRBMultiMap örneğine bakın.

CRBMultiMap::GetNextWithKey

Belirli bir anahtarla ilişkili öğeyi almak ve konum değerini güncelleştirmek için bu yöntemi çağırın.

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

Parametreler

Pos
CRBMultiMap::FindFirstWithKey veya CRBMultiMap::GetNextValueWithKey çağrısıyla veya önceki bir çağrısıyla GetNextWithKeyalınan konum değeri.

key
Bulunabilecek öğeyi tanımlayan anahtarı belirtir.

Dönüş Değeri

Verilen anahtarla ilişkili sonraki CRBTree::CPair Sınıfı öğesini döndürür.

Açıklamalar

Konum değeri, anahtarla ilişkilendirilmiş sonraki değere işaret etmek için güncelleştirilir. Başka değer yoksa, konum değeri NULL olarak ayarlanır.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

CRBMultiMap::Insert

Eşlemeye bir öğe çifti eklemek için bu yöntemi çağırın.

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

Parametreler

key
Nesneye CRBMultiMap eklenecek anahtar değeri.

value
Nesneye CRBMultiMap eklenecek, anahtarla ilişkili değer.

Dönüş Değeri

Nesnedeki anahtar/değer öğesi çiftinin CRBMultiMap konumunu döndürür.

Açıklamalar

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

Örnek

CRBMultiMap::CRBMultiMap örneğine bakın.

CRBMultiMap::RemoveKey

Belirli bir anahtarın tüm anahtar/değer öğelerini kaldırmak için bu yöntemi çağırın.

size_t RemoveKey(KINARGTYPE key) throw();

Parametreler

key
Silinecek öğeleri tanımlayan anahtarı belirtir.

Dönüş Değeri

Verilen anahtarla ilişkili değerlerin sayısını döndürür.

Açıklamalar

RemoveKeyanahtarla eşleşen bir anahtarı olan tüm anahtar/değer öğelerini siler.

Kullanılabilir diğer yöntemler hakkında bilgi için CRBTree temel sınıfı belgelerine bakın.

Örnek

CRBMultiMap::CRBMultiMap örneğine bakın.

Ayrıca bkz.

CRBTree Sınıfı
CAtlMap Sınıfı
CRBMap Sınıfı
Sınıfa Genel Bakış