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
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 GetNextValueWithKey
elde 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 GetNextWithKey
alı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
RemoveKey
anahtarla 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ış