Kelas CRBMultiMap
Kelas ini mewakili struktur pemetaan yang memungkinkan setiap kunci dapat dikaitkan dengan lebih dari satu nilai, menggunakan pohon biner Merah-Hitam.
Sintaks
template<typename K,
typename V,
class KTraits = CElementTraits<K>,
class VTraits = CElementTraits<V>>
class CRBMultiMap : public CRBTree<K, V, KTraits, VTraits>
Parameter
K
Jenis elemen kunci.
V
Jenis elemen nilai.
KTraits
Kode yang digunakan untuk menyalin atau memindahkan elemen kunci. Lihat Kelas CElementTraits untuk detail selengkapnya.
VTraits
Kode yang digunakan untuk menyalin atau memindahkan elemen nilai.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CRBMultiMap::CRBMultiMap | Konstruktor. |
CRBMultiMap::~CRBMultiMap | Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CRBMultiMap::FindFirstWithKey | Panggil metode ini untuk menemukan posisi elemen pertama dengan kunci tertentu. |
CRBMultiMap::GetNextValueWithKey | Panggil metode ini untuk mendapatkan nilai yang terkait dengan kunci tertentu, dan perbarui nilai posisi. |
CRBMultiMap::GetNextWithKey | Panggil metode ini untuk mendapatkan elemen yang terkait dengan kunci tertentu, dan perbarui nilai posisi. |
CRBMultiMap::Insert | Panggil metode ini untuk menyisipkan pasangan elemen ke dalam peta. |
CRBMultiMap::RemoveKey | Panggil metode ini untuk menghapus semua elemen kunci/nilai untuk kunci tertentu. |
Keterangan
CRBMultiMap
menyediakan dukungan untuk array pemetaan dari jenis tertentu, mengelola array elemen dan nilai kunci yang diurutkan. Tidak seperti kelas CRBMap, setiap kunci dapat dikaitkan dengan lebih dari satu nilai.
Elemen (terdiri dari kunci dan nilai) disimpan dalam struktur pohon biner, menggunakan metode CRBMultiMap::Insert . Elemen dapat dihapus menggunakan metode CRBMultiMap::RemoveKey , yang menghapus semua elemen yang cocok dengan kunci yang diberikan.
Melintasi pohon dimungkinkan dengan metode seperti CRBTree::GetHeadPosition, CRBTree::GetNext, dan CRBTree::GetNextValue. Mengakses nilai yang berpotensi beberapa per kunci dimungkinkan menggunakan metode CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey, dan CRBMultiMap::GetNextWithKey . Lihat contoh untuk CRBMultiMap::CRBMultiMap untuk ilustrasi tentang hal ini dalam praktiknya.
Parameter KTraits dan VTraits adalah kelas sifat yang berisi kode tambahan apa pun yang diperlukan untuk menyalin atau memindahkan elemen.
CRBMultiMap
berasal dari CRBTree, yang mengimplementasikan pohon biner menggunakan algoritma Red-Black. Alternatif untuk CRBMultiMap
dan ditawarkan oleh kelas CAtlMapCRBMap
. Ketika hanya sejumlah kecil elemen yang perlu disimpan, pertimbangkan untuk menggunakan kelas CSimpleMap sebagai gantinya.
Untuk diskusi yang lebih lengkap tentang berbagai kelas koleksi dan fitur serta karakteristik performanya, lihat Kelas Koleksi ATL.
Hierarki Warisan
CRBMultiMap
Persyaratan
Header: atlcoll.h
CRBMultiMap::CRBMultiMap
Konstruktor.
explicit CRBMultiMap(size_t nBlockSize = 10) throw();
Parameter
nBlockSize
Ukuran blok.
Keterangan
Parameter nBlockSize adalah ukuran jumlah memori yang dialokasikan saat elemen baru diperlukan. Ukuran blok yang lebih besar mengurangi panggilan ke rutinitas alokasi memori, tetapi menggunakan lebih banyak sumber daya. Default akan mengalokasikan ruang untuk 10 elemen pada satu waktu.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
Contoh
// 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
Destruktor.
~CRBMultiMap() throw();
Keterangan
Membebaskan sumber daya yang dialokasikan.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
CRBMultiMap::FindFirstWithKey
Panggil metode ini untuk menemukan posisi elemen pertama dengan kunci tertentu.
POSITION FindFirstWithKey(KINARGTYPE key) const throw();
Parameter
kunci
Menentukan kunci yang mengidentifikasi elemen yang akan ditemukan.
Tampilkan Nilai
Mengembalikan POSISI elemen kunci/nilai pertama jika kunci ditemukan, NULL sebaliknya.
Keterangan
Kunci dalam CRBMultiMap
dapat memiliki satu atau beberapa nilai terkait. Metode ini akan memberikan nilai posisi dari nilai pertama (yang mungkin, pada kenyataannya, menjadi satu-satunya nilai) yang terkait dengan kunci tertentu tersebut. Nilai posisi yang dikembalikan kemudian dapat digunakan dengan CRBMultiMap::GetNextValueWithKey atau CRBMultiMap::GetNextWithKey untuk mendapatkan nilai dan memperbarui posisi.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
Contoh
Lihat contoh untuk CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextValueWithKey
Panggil metode ini untuk mendapatkan nilai yang terkait dengan kunci tertentu dan perbarui nilai posisi.
const V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parameter
pos
Nilai posisi, diperoleh dengan panggilan ke CRBMultiMap::FindFirstWithKey atau CRBMultiMap::GetNextWithKey, atau panggilan sebelumnya ke GetNextValueWithKey
.
kunci
Menentukan kunci yang mengidentifikasi elemen yang akan ditemukan.
Tampilkan Nilai
Mengembalikan pasangan elemen yang terkait dengan kunci yang diberikan.
Keterangan
Nilai posisi diperbarui untuk menunjuk ke nilai berikutnya yang terkait dengan kunci. Jika tidak ada nilai lagi, nilai posisi diatur ke NULL.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
Contoh
Lihat contoh untuk CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextWithKey
Panggil metode ini untuk mendapatkan elemen yang terkait dengan kunci tertentu dan perbarui nilai posisi.
const CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parameter
pos
Nilai posisi, diperoleh dengan panggilan ke CRBMultiMap::FindFirstWithKey atau CRBMultiMap::GetNextValueWithKey, atau panggilan sebelumnya ke GetNextWithKey
.
kunci
Menentukan kunci yang mengidentifikasi elemen yang akan ditemukan.
Tampilkan Nilai
Mengembalikan elemen CRBTree::CPair Class berikutnya yang terkait dengan kunci yang diberikan.
Keterangan
Nilai posisi diperbarui untuk menunjuk ke nilai berikutnya yang terkait dengan kunci. Jika tidak ada nilai lagi, nilai posisi diatur ke NULL.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
CRBMultiMap::Insert
Panggil metode ini untuk menyisipkan pasangan elemen ke dalam peta.
POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);
Parameter
kunci
Nilai kunci untuk ditambahkan ke CRBMultiMap
objek.
value
Nilai yang akan ditambahkan ke CRBMultiMap
objek, yang terkait dengan kunci.
Tampilkan Nilai
Mengembalikan posisi pasangan elemen kunci/nilai dalam CRBMultiMap
objek.
Keterangan
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
Contoh
Lihat contoh untuk CRBMultiMap::CRBMultiMap.
CRBMultiMap::RemoveKey
Panggil metode ini untuk menghapus semua elemen kunci/nilai untuk kunci tertentu.
size_t RemoveKey(KINARGTYPE key) throw();
Parameter
kunci
Menentukan kunci yang mengidentifikasi elemen yang akan dihapus.
Tampilkan Nilai
Mengembalikan jumlah nilai yang terkait dengan kunci yang diberikan.
Keterangan
RemoveKey
menghapus semua elemen kunci/nilai yang memiliki kunci yang cocok dengan kunci.
Lihat dokumentasi untuk kelas dasar CRBTree untuk informasi tentang metode lain yang tersedia.
Contoh
Lihat contoh untuk CRBMultiMap::CRBMultiMap.
Lihat juga
Kelas CRBTree
Kelas CAtlMap
Kelas CRBMap
Gambaran Umum Kelas