Peta di C++ Standard Template Library (STL) dengan Contoh Cetak
Apa itu std::map?
Dalam C++, sebuah MAP adalah wadah asosiatif yang menyimpan item dalam bentuk yang dipetakan. Setiap item di peta terdiri dari nilai kunci dan nilai yang dipetakan. Dua nilai yang dipetakan tidak dapat berbagi nilai kunci yang sama.
Nilai kunci bagus untuk menyortir dan mengidentifikasi elemen secara unik. Nilai yang dipetakan adalah untuk menyimpan konten yang terkait dengan kunci. Keduanya mungkin berbeda dalam tipe, tetapi tipe anggota menggabungkannya melalui tipe pasangan yang menggabungkan keduanya.
Dalam tutorial C++ ini, Anda akan belajar:
Apa itu std::map?
Mengapa menggunakan std::map?
Sintaks:
Jenis anggota:
Fungsi Bawaan
Mengulangi Elemen Peta
Memasukkan data di std::map
Menelusuri di Peta
Menghapus Data dari Peta
Mengapa menggunakan std::map?
Berikut adalah alasan untuk menggunakan peta:
std::peta menyimpan kunci unik hanya dalam urutan yang diurutkan berdasarkan kriteria penyortiran yang dipilih.
Mencari elemen dengan mudah dan cepat menggunakan kunci.
Hanya satu elemen yang dilampirkan ke setiap kunci.
std::map dapat digunakan sebagai array asosiatif.
std::map dapat diimplementasikan menggunakan pohon biner (seimbang).
Sintaks:
Untuk mendeklarasikan std::map, gunakan sintaks ini:
std::map<key_datatype, value_datatype>map_name;
Key_datatype menunjukkan tipe data dari kunci peta.
Value_datatype menunjukkan tipe data dari nilai yang sesuai dengan kunci peta.
Nama_peta adalah nama peta.
Misalnya:
map<string, int> my_map;
Kami mendeklarasikan peta bernama my_map. Peta akan memiliki string sebagai kunci tipe data dan bilangan bulat sebagai nilai tipe data.
Jenis anggota:
Fungsi anggota dapat menggunakan tipe anggota berikut sebagai parameter atau tipe pengembalian:
jenis_kunci: Kunci (Parameter pertama dalam template)
mapped_type: T (Parameter kedua dalam template)
bandingkan_kunci: Bandingkan (Parameter ketiga dalam template)
jenis_pengalokasi: Alokasikan (Parameter keempat dalam template)
tipe_nilai: pasangkan
nilai_bandingkan: Kelas fungsi bersarang untuk membandingkan elemen
referensi: allocator_type::referensi
const_reference: allocator_type::const_reference
penunjuk: allocator_type::pointer
const_pointer: allocator_type::const_pointer
pengulangan: iterator dua arah ke value_type
const_iterator: iterator dua arah ke const value_type
reverse_iterator: iterator terbalik
const_reverse_iterator: iterator terbalik yang konstan
difference_type: ptrdiff_t
jenis_ukuran: ukuran_t
Fungsi Bawaan
std::map hadir dengan fungsi bawaan. Beberapa di antaranya adalah:
mulai()- Fungsi ini mengembalikan iterator ke item pertama peta.
ukuran()- Fungsi ini mengembalikan jumlah item dalam peta.
kosong()- Fungsi ini mengembalikan nilai Boolean yang menunjukkan apakah peta kosong.
masukkan( pasangan(kunci, nilai))- Fungsi ini menyisipkan pasangan nilai kunci baru ke peta.
temukan(val)- Fungsi ini memberikan iterator ke elemen val jika ditemukan. Jika tidak, itu akan mengembalikan m.end().
Hapus (posisi iterator)- Fungsi ini menghapus item pada posisi yang ditunjuk oleh iterator.
hapus(const g) – Fungsi ini menghapus nilai kunci g dari peta.
Hapus ()- Fungsi ini menghapus semua item dari peta.
Mengulangi Elemen Peta
Anda dapat mengulangi elemen peta. Kita hanya perlu membuat iterator dan menggunakannya untuk ini. Misalnya:
Contoh 1:
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<int, string> Students;
Students.insert(std::pair<int, string>(200, "Alice"));
Students.insert(std::pair<int, string>(201, "John"));
cout << "Map size is: " << Students.size() << endl;
cout << endl << "Default map Order is: " << endl;
for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {
cout << (*it).first << ": " << (*it).second << endl;
}
}
Keluaran:
Berikut adalah screenshot kodenya:
Penjelasan Kode:
Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya.
Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
Panggil fungsi main(). { menandai awal dari isi fungsi.
Buat peta bernama Siswa di mana kuncinya adalah bilangan bulat, dan nilainya adalah string.
Memasukkan nilai ke dalam peta Siswa. Kunci 200 dan nilai Alice akan dimasukkan ke dalam peta.
Memasukkan nilai ke dalam peta Siswa. Kunci 201 dan nilai John akan dimasukkan ke dalam peta.
Gunakan fungsi size() untuk mendapatkan ukuran peta bernama Siswa. Ini akan mengembalikan 2.
Cetak beberapa teks di konsol.
Gunakan perulangan for untuk membuat iterator bernama iterator untuk mengulangi elemen peta bernama Siswa.
Cetak nilai peta Siswa di konsol.
Akhir dari badan for loop.
Akhir dari isi fungsi main().
Memasukkan data di std::map
Anda dapat memasukkan item ke dalam std::map menggunakan fungsi insert(). Ingat bahwa kunci std::map harus unik.
Jadi, pertama kali memeriksa apakah setiap kunci ada di peta. Jika ada, entri tidak akan dimasukkan, tetapi mengembalikan iterator untuk entri yang ada. Jika tidak ada, entri akan dimasukkan.
Fungsi memiliki variasi berikut:
masukkan(pasangan)- dengan variasi ini, pasangan nilai kunci dimasukkan ke dalam peta.
masukkan(start_itr, end_itr)- dengan variasi ini, entri akan dimasukkan dalam rentang yang ditentukan oleh start_itr dan end_itr dari peta lain.
insert_or_assing() fungsi bekerja dengan cara yang sama seperti fungsi insert(), tetapi jika kunci yang diberikan sudah ada di peta, nilainya akan diubah.
Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
Panggil fungsi main(). { menandai awal dari isi fungsi.
Buat peta bernama m di mana kuncinya adalah bilangan bulat, dan nilainya adalah bilangan bulat. Tiga entri telah dibuat ke dalam peta.
Memasukkan entri baru ke dalam peta m. Kunci 5 dan nilai 6 akan dimasukkan ke dalam peta.
Mencoba membuat entri ke kunci yang sudah ada. Karena kunci 1 sudah ada di peta, entri tidak akan dibuat.
Menggunakan fungsi insert_or_assign() untuk menyisipkan atau memodifikasi entri yang ada. Karena kunci 1 sudah ada, nilainya akan diubah menjadi 6.
Cetak beberapa teks di konsol. Karakter “\t” membuat spasi horizontal sementara karakter “\n” memindahkan kursor mouse ke baris berikutnya.
Gunakan for loop untuk membuat iterator bernama itr untuk mengulangi elemen peta bernama m.
Cetak nilai peta m di konsol. Karakter “\t” membuat spasi horizontal antara setiap tombol dan nilainya yang sesuai. Sebaliknya, karakter “\n” memindahkan kursor mouse ke baris berikutnya setelah setiap iterasi.
Akhir dari badan for loop.
Program harus mengembalikan nilai setelah berhasil diselesaikan.
Akhir dari isi fungsi main().
Menelusuri di Peta
Kita dapat menggunakan fungsi find() untuk mencari elemen di peta dengan kuncinya. Jika kunci tidak ditemukan, fungsi mengembalikan std::map::end. Jika tidak, iterator dari elemen yang dicari akan dikembalikan.
Contoh 2:
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<int, string> Students;
Students.insert(std::pair<int, string>(200, "Alice"));
Students.insert(std::pair<int, string>(201, "John"));
std::map<int, string>::iterator it = Students.find(201);
if (it != Students.end()) {
std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
}
}
Keluaran:
Berikut adalah screenshot kodenya:
Penjelasan Kode:
Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
Sertakan file header peta ke dalam kode kami untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
Panggil fungsi main(). { menandai awal dari isi fungsi main().
Buat peta bernama Siswa yang kuncinya akan berupa bilangan bulat dan nilai string.
Memasukkan nilai ke dalam peta Siswa. Kunci 200 dan nilai Alice akan dimasukkan ke dalam peta.
Masukkan nilai ke dalam peta Siswa. Kunci 201 dan nilai John akan dimasukkan ke dalam peta.
Cari nilai yang terkait dengan kunci 201.
Gunakan pernyataan if untuk memeriksa apakah nilai kunci ditemukan.
Cetak nilai kunci di samping beberapa teks di konsol.
Akhir dari isi pernyataan if.
Akhir dari isi fungsi main().
Menghapus Data dari Peta
Kita dapat menggunakan fungsi erase() untuk menghapus nilai dari peta. Kami hanya membuat iterator yang menunjuk ke elemen yang akan dihapus. Iterator kemudian diteruskan ke fungsi erase().
Contoh 3:
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<std::string, int> my_map;
my_map.insert(std::make_pair("cow", 1));
my_map.insert(std::make_pair("cat", 2));
my_map["lion"] = 3;
map<std::string, int>::iterator it = my_map.find("cat");
my_map.erase(it);
for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)
cout << (*it).first << ": " << (*it).second << endl;
return 0;
}
Keluaran:
Berikut adalah screenshot kodenya:
Penjelasan Kode:
Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya.
Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
Panggil fungsi main(). { menandai awal dari isi fungsi main().
Buat peta bernama my_map yang kuncinya berupa string dan nilai integer.
Masukkan nilai ke dalam peta my_map. Kunci Sapi dan nilai 1 akan dimasukkan ke dalam peta.
Masukkan nilai ke dalam peta my_map. Kunci Cat dan nilai 2 akan dimasukkan ke dalam peta.
Tambahkan nilai 3 ke dalam peta my_map dengan kunci singa.
Buat iterator untuk mengulangi peta my_map mencari kucing kunci.
Hapus elemen yang ditunjuk oleh iterator.
Gunakan iterator untuk mengulangi elemen peta my_map dari awal hingga akhir.
Cetak isi peta my_map di konsol.
Program harus mengembalikan output setelah berhasil diselesaikan.
Akhir dari isi fungsi main().
Ringkasan:
Peta adalah wadah asosiatif yang menyimpan item dalam bentuk yang dipetakan.
Setiap item di peta memiliki nilai kunci dan nilai yang dipetakan.
Dalam peta, dua nilai yang dipetakan tidak dapat berbagi nilai kunci.
Nilai kunci membantu dalam menyortir dan mengidentifikasi elemen secara unik.
Nilai yang dipetakan membantu dalam menyimpan konten yang terkait dengan kunci.
Peta C++ menyimpan kunci unik dalam urutan yang diurutkan.
Untuk bekerja dengan peta C++, kami membuat iterator untuk mengulangi elemen.
Dengan iterator, kita dapat melakukan tugas seperti mencari dan menghapus item dari peta.