Bagikan melalui


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

CRBTree

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