[C++] Penggunaan STL Containers :: multimap

STL Containers adalah kepanjangan dari Standard Template Library Containers yaitu merupakan library dari template-template yang sudah disediakan oleh bahasa pemrograman C++. Salah satu template yang akan dipaparkan disini adalah “multimap”.

Multimap hampir mirip seperti sebuah array yang dapat menyimpan beberapa variabel/nilai didalamnya. Akan tetapi multimap mampu menyediakan array yang sifatnya dinamis, artinya multimap ini mampu menyimpan nilai sesuai dengan kebutuhan tanpa harus mendeklarasikan besar array yang diperlukan terlebih dahulu. Hal ini menjadikan multimap dapat menghemat penggunaan memori karena hanya menyimpan nilai yang dibutuhkan saja saat itu.

Program dibawah ini menjelaskan bagaimana penggunaan multimap. Contoh program ini dapat menyimpan beberapa nilai mahasiswa dan menyimpan NIM mahasiswa sebagai indeks array-nya. Kemudian program ini juga mampu melakukan pencarian terhadap nilai-nilai mahasiswa yang dideklarasikan sebelumnya dengan menggunakan NIM sebagai indeksnya. Program nilai mahasiswa ini merupakan hasil modifikasi dari kode program buku telepon yang ditulis Zahid Ghadialy.

#include <iostream>
#include <map>
#include <string> 

using namespace std;

//deklarasi fungsi
void printAll(multimap <string, int> nM);
void printKey(multimap <string, int> nM, string key);

int main()
{
 multimap <string, int> nilaiMhs;
 string buffer_nrp;
 int buffer_nilai;
 char next = 'y';

 cout << "Selamat datang di program rekap nilai mahasiswa\n";
 cout << "Silakan masukkan data nilai mahasiswa sesuai nrp dan nilainya\n";

 //input data dinamis
 do {
 cout << "\nNRP : ";
 cin >> buffer_nrp;
 cout << "Nilai : ";
 cin >> buffer_nilai;
 nilaiMhs.insert (pair <string,int> (buffer_nrp, buffer_nilai));

 cout << "Masih ingin menambah data (y/n)? ";
 cin >> next;
 }
 while(next == 'y');

 //print seluruh data
 cout << "\n\nBerikut detail data yang Anda masukkan :";
 printAll(nilaiMhs);

 //mencari record by nrp
 do {
 cout << "Ingin mencari mahasiswa (y/n)? ";
 cin >> next;
 if (next == 'y') {
 cout << "Masukkan NRP yang Anda cari kemudian tekan tombol 'Enter'\nNRP : ";
 cin >> buffer_nrp;
 printKey(nilaiMhs, buffer_nrp);
 }
 else
 next = 'n';
 }
 while (next == 'y');

 cout << "Terima kasih...\n";
 system("pause");
 return 0;
}

//fungsi ini akan mencetak seluruh isi multi-map
void printAll(multimap <string, int> nM)
{
 cout << "\n\nData Mahasiswa" << endl;
 cout << "Jumlah Data = " << nM.size() << endl << endl;
 multimap <string, int> :: iterator it = nM.begin();
 cout << " NRP | Nilai\n";
 while(it != nM.end())
 {
 cout << " " << it->first << " | " << it->second << endl;
 it++;
 }
 cout << endl;
}

//fungsi ini akan mencetak record dengan key yang dimaksud
void printKey(multimap <string, int> nM, string key)
{
 pair <multimap <string,int> :: iterator, multimap <string,int> :: iterator> ii;
 multimap <string,int> :: iterator it; //Iterator to be used along with ii
 ii = nM.equal_range(key); //We get the first and last entry in ii;
 cout << "\nData Nilai dari NRP : " << key << endl;
 for(it = ii.first; it != ii.second; ++it)
 {
 cout << "Nilai = " << it->second << endl;
 }
 cout << endl;
}

Posted on March 18, 2012, in Programming and tagged , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: