Peta masuk C++ Perpustakaan Templat Standar (STL)

⚡ Ringkasan Cerdas

Peta masuk C++ adalah kontainer asosiatif dari Standard Template Library yang menyimpan elemen sebagai pasangan kunci-nilai yang diurutkan, di mana setiap kunci unik dipetakan ke satu nilai dan memungkinkan pencarian, penyisipan, dan penelusuran terurut yang cepat.

  • 🗺️ Kontainer asosiatif: A C++ Peta tersebut menyimpan item sebagai pasangan kunci-nilai dengan kunci unik yang diurutkan secara otomatis.
  • 🧩 Judul dan sintaks: Sertakan header peta, lalu deklarasikan std::map nama untuk menyimpan pasangan yang diketik.
  • Fungsi bawaan: begin(), size(), empty(), insert(), find(), erase(), dan clear() mengelola isi peta.
  • 🔄 Pengulangan: Iterator dua arah menelusuri elemen peta dalam urutan kunci yang telah diurutkan untuk dibaca atau dihapus.
  • 🔑 Kunci unik: Dua elemen tidak dapat memiliki kunci yang sama, yang menjadikan map ideal sebagai array asosiatif.
  • 🤖 Bantuan AI: GitHub Copilot dan asisten AI serupa menyusun deklarasi peta dan perulangan dari komentar singkat.

Peta masuk C++ STL

Apa yang dimaksud dengan Peta C++?

In C++MAP adalah wadah asosiatif yang menyimpan item dalam bentuk yang dipetakan. Setiap item dalam map terdiri dari nilai kunci dan nilai yang dipetakan. Dua nilai yang dipetakan tidak dapat memiliki nilai kunci yang sama.

Nilai kunci berguna untuk mengurutkan dan mengidentifikasi elemen secara unik, sedangkan nilai yang dipetakan menyimpan konten yang terkait dengan setiap kunci. Keduanya mungkin berbeda tipenya, tetapi tipe anggota menggabungkannya menjadi pasangan yang dapat menampung keduanya.

Sebelum menulis kode apa pun, ada baiknya mengetahui mengapa map seringkali menjadi wadah yang tepat untuk digunakan.

Mengapa menggunakan std::peta?

Berikut beberapa alasan mengapa kita perlu menggunakan peta:

  • std::map hanya menyimpan kunci unik, dalam urutan terurut berdasarkan kriteria pengurutan yang dipilih.
  • Mencari elemen menggunakan kunci sangat mudah dan cepat.
  • Hanya satu elemen yang melekat pada setiap kunci.
  • std::map dapat digunakan sebagai array asosiatif.
  • std::map dapat diimplementasikan menggunakan pohon biner seimbang.

Untuk memanfaatkan keuntungan-keuntungan ini, mulailah dengan sintaks deklarasi.

Sintaksis

Untuk mendeklarasikan std::map, gunakan sintaks ini:

std::map<key_datatype, value_datatype>map_name; 
  • The tipe_data_kunci menunjukkan tipe data kunci peta.
  • The tipe_data_nilai menunjukkan tipe data dari nilai yang sesuai dengan kunci peta.
  • The nama_peta adalah nama petanya.

Sebagai contoh:

map<string, int> my_map; 

Kita mendeklarasikan sebuah map bernama my_map. Map ini akan memiliki tipe data kunci berupa string dan tipe data nilai berupa integer.

Tipe anggota

Fungsi anggota dapat menggunakan tipe anggota berikut sebagai parameter atau tipe kembalian:

  • tipe_kunci: Kunci (parameter pertama dalam templat)
  • tipe_dipetakan: T (parameter kedua dalam templat)
  • perbandingan_kunci: Bandingkan (parameter ketiga dalam templat)
  • pengalokasi_tipe: Alokasi (parameter keempat dalam templat)
  • tipe_nilai: pasangan
  • nilai_bandingkan: Kelas fungsi bersarang untuk membandingkan elemen
  • referensi: pengalokasi_tipe::referensi
  • referensi_konstitusi: pengalokasi_tipe::const_reference
  • petunjuk: pengalokasi_tipe::penunjuk
  • const_pointer: pengalokasi_tipe::const_pointer
  • iterator: iterator dua arah ke value_type
  • const_iterator: iterator dua arah ke const value_type
  • membalikkan_iterator: iterator terbalik
  • const_reverse_iterator: iterator terbalik konstan
  • perbedaan_tipe: ptrdiff_t
  • tipe ukuran: ukuran_t

Fungsi Bawaan std::map

std::map hadir dengan fungsi bawaan. Beberapa di antaranya termasuk:

  • mulai() – Fungsi ini mengembalikan iterator ke item pertama dari peta.
  • ukuran() – Fungsi ini mengembalikan jumlah item dalam sebuah map.
  • kosong() – Fungsi ini mengembalikan nilai Boolean yang menunjukkan apakah peta tersebut kosong atau tidak.
  • sisipkan(pasangan(kunci, nilai)) – Fungsi ini menyisipkan pasangan kunci-nilai baru ke dalam sebuah map.
  • temukan(nilai) – Fungsi ini memberikan iterator ke elemen val jika ditemukan. Jika tidak, fungsi ini mengembalikan m.end().
  • hapus(posisi iterator) – Fungsi ini menghapus item pada posisi yang ditunjuk oleh iterator.
  • hapus(konstan g) – Fungsi ini menghapus pasangan kunci-nilai g dari sebuah map.
  • bersih() – Fungsi ini menghapus semua item dari peta.

Setelah fungsi-fungsi didefinisikan, contoh-contoh berikut akan menerapkannya, dimulai dengan iterasi.

Iterasi pada Elemen Peta

Anda dapat melakukan iterasi pada elemen-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:

C++ Contoh keluaran iterasi peta 1

Berikut ini tangkapan layar kodenya:

C++ Contoh kode iterasi peta 1

Code Penjelasan:

  1. Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
  2. Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya.
  3. Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
  4. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi main(). Tanda { menandai awal dari isi fungsi.
  6. Buat peta bernama Siswa yang kuncinya berupa bilangan bulat, dan nilainya berupa string.
  7. Masukkan nilai ke dalam peta Siswa. Kunci 200 dan nilai Alice akan dimasukkan ke dalam peta.
  8. Masukkan nilai ke dalam peta Siswa. Kunci 201 dan nilai John akan dimasukkan ke dalam peta.
  9. Gunakan fungsi size() untuk mendapatkan ukuran peta bernama Students. Ini seharusnya mengembalikan nilai 2.
  10. Cetak beberapa teks di konsol.
  11. Gunakan perulangan for untuk membuat iterator yang diberi nama untuk mengulangi elemen peta bernama Siswa.
  12. Cetak nilai peta Siswa di konsol.
  13. Akhir dari badan perulangan for.
  14. Akhir dari isi fungsi main().

Memasukkan data ke std::map

Anda dapat memasukkan item ke dalam std::map menggunakan fungsi insert(). Ingatlah bahwa kunci std::map harus unik.

Jadi, pertama-tama ia memeriksa apakah setiap kunci ada dalam peta. Jika ada, entri tidak akan dimasukkan, tetapi ia mengembalikan iterator untuk entri yang sudah ada. Jika tidak ada, entri akan dimasukkan.

Fungsi ini memiliki variasi berikut:

  • sisipkan(pasangan) – dengan variasi ini, pasangan kunci-nilai dimasukkan ke dalam peta.
  • sisipkan(iterasi_awal, iterasi_akhir) – dengan variasi ini, entri akan dimasukkan dalam rentang yang ditentukan oleh start_itr dan end_itr dari map lain.

Fungsi insert_or_assign() bekerja dengan cara yang sama seperti fungsi insert(), tetapi jika kunci yang diberikan sudah ada di dalam map, nilainya akan dimodifikasi.

Contoh 2

#include <map>
#include <iostream>

using namespace std;

int main() {

	map<int, int> m{ {1,3} , {2,4} , {3,5} };

	m.insert({ 5, 6 });
	m.insert({ 1, 8 });

	m.insert_or_assign(1, 6);  
	
	cout << "Key\tElement\n";
	for (auto itr = m.begin(); itr != m.end(); ++itr) {
		cout << itr->first << '\t' << itr->second << '\n';
	}
	return 0;
}

Keluaran:

C++ Contoh 2 keluaran sisipan peta

Berikut ini tangkapan layar kodenya:

C++ Contoh kode sisipan peta 2

Code Penjelasan:

  1. Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
  2. Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
  3. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  4. Panggil fungsi main(). Tanda { menandai awal dari isi fungsi.
  5. Buat peta bernama m yang kuncinya berupa bilangan bulat, dan nilainya berupa bilangan bulat. Tiga entri telah dibuat ke dalam peta.
  6. Memasukkan entri baru ke dalam peta m. Kunci 5 dan nilai 6 akan dimasukkan ke dalam peta.
  7. Mencoba membuat entri ke kunci yang sudah ada. Karena kunci 1 sudah ada di peta, entri tidak akan dibuat.
  8. Menggunakan fungsi insert_or_assign() untuk menyisipkan atau memodifikasi entri yang sudah ada. Karena kunci 1 sudah ada, nilainya akan diubah menjadi 6.
  9. Cetak beberapa teks di konsol. Karakter “\t” membuat spasi horizontal sedangkan karakter “\n” menggerakkan kursor mouse ke baris berikutnya.
  10. Menggunakan untuk loop untuk membuat iterator bernama itr untuk mengulangi elemen peta bernama m.
  11. Cetak nilai peta m di konsol. Karakter “\t” menciptakan spasi horizontal antara setiap kunci dan nilai terkaitnya. Sebaliknya, karakter “\n” memindahkan kursor mouse ke baris berikutnya setelah setiap iterasi.
  12. Akhir dari badan perulangan for.
  13. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  14. Akhir dari isi fungsi main().

Mencari di Peta

Kita dapat menggunakan fungsi find() untuk mencari elemen dalam sebuah map berdasarkan kuncinya. Jika kunci tidak ditemukan, fungsi akan mengembalikan std::map::end. Jika ditemukan, iterator dari elemen yang dicari akan dikembalikan.

Contoh 3

#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:

C++ peta temukan cari Contoh 3 keluaran

Berikut ini tangkapan layar kodenya:

C++ peta temukan cari Contoh kode 3

Code Penjelasan:

  1. Sertakan file header iostream ke dalam kode kami untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
  2. Sertakan file header string ke dalam kode kami untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
  3. Sertakan file header peta ke dalam kode kami untuk menggunakan fungsinya tanpa kesalahan.
  4. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi main(). Tanda { menandai awal dari isi fungsi main().
  6. Buat peta bernama Siswa yang kuncinya berupa bilangan bulat dan string nilai.
  7. Masukkan nilai ke dalam peta Siswa. Kunci 200 dan nilai Alice akan dimasukkan ke dalam peta.
  8. Masukkan nilai ke dalam peta Siswa. Kunci 201 dan nilai John akan dimasukkan ke dalam peta.
  9. Cari nilai yang terkait dengan kunci 201.
  10. Gunakan pernyataan if untuk memeriksa apakah nilai kunci ditemukan.
  11. Cetak nilai kunci di samping beberapa teks di konsol.
  12. Akhir dari isi pernyataan if.
  13. Akhir dari isi fungsi main().

Menghapus Data dari Peta

Kita dapat menggunakan fungsi erase() untuk menghapus nilai dari sebuah map. Kita cukup membuat iterator yang menunjuk ke elemen yang akan dihapus. Iterator tersebut kemudian diteruskan ke fungsi erase().

Contoh 4

#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:

C++ map erase delete Contoh 4 output

Berikut ini tangkapan layar kodenya:

C++ map erase delete Contoh 4 kode

Code Penjelasan:

  1. Sertakan file header iostream ke dalam kode kita untuk menggunakan fungsinya.
  2. Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya.
  3. Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
  4. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi main(). Tanda { menandai awal dari isi fungsi main().
  6. Buat peta bernama my_map yang kuncinya berupa string dan nilai bilangan bulat.
  7. Masukkan nilai ke dalam peta my_map. Kunci Sapi dan nilai 1 akan dimasukkan ke dalam peta.
  8. Masukkan nilai ke dalam peta my_map. Kunci Cat dan nilai 2 akan dimasukkan ke dalam peta.
  9. Tambahkan nilai 3 ke dalam peta my_map dengan kunci singa.
  10. Buat iterator untuk mengulangi peta my_map mencari kucing kunci.
  11. Hapus elemen yang ditunjuk oleh iterator.
  12. Gunakan iterator untuk mengulang elemen-elemen peta my_map dari awal hingga akhir.
  13. Cetak isi peta my_map di konsol.
  14. Program harus mengembalikan keluaran setelah berhasil diselesaikan.
  15. Akhir dari isi fungsi main().

Pertanyaan Umum Demo Slot

std::map menyimpan kunci yang diurutkan menggunakan pohon pencarian biner yang seimbang sendiri, memberikan operasi O(log n). std::unordered_map menggunakan tabel hash untuk pencarian rata-rata O(1) tetapi menyimpan kunci tanpa urutan tertentu. Pilih berdasarkan kebutuhan pengurutan Anda.

Std::map biasanya diimplementasikan sebagai pohon pencarian biner yang menyeimbangkan diri, paling sering berupa pohon merah-hitam. Ini menjaga kunci dalam urutan terurut dan menjamin waktu logaritmik untuk operasi penyisipan, penghapusan, dan pencarian.

Tidak. std::map hanya menyimpan kunci unik, jadi memasukkan kunci yang sudah ada tidak akan menimpanya. Jika kunci duplikat diperlukan, gunakan std::multimap, yang memungkinkan beberapa elemen untuk berbagi nilai kunci yang sama.

Gunakan map_name[key] untuk membaca atau menetapkan nilai; operator subscript menyisipkan entri default jika kunci tidak ada. Anggota at() melempar pengecualian untuk kunci yang tidak ada, sehingga menjadikannya pilihan yang lebih aman.

Lewatkan komparator kustom sebagai argumen templat ketiga, seperti std::map. >. Pembanding yang lebih besar mengurutkan kunci dari tertinggi ke terendah, bukan dari urutan menaik standar.

`std::map` menyimpan pasangan kunci-nilai dan mencari nilai berdasarkan kunci, sedangkan `std::set` hanya menyimpan kunci unik tanpa nilai terkait. Keduanya menjaga elemen tetap terurut, tetapi `map` mengaitkan data dengan setiap kunci.

Ya. Asisten pengkodean AI mengubah perintah atau komentar singkat menjadi kode std::map yang berfungsi, termasuk deklarasi, panggilan insert, dan perulangan iterator. Selalu tinjau tipe kunci, urutan, dan kasus khusus yang dihasilkan sebelum mengkompilasi.

Ya. Kopilot GitHub Ini menyarankan deklarasi peta, panggilan sisipkan dan temukan, serta perulangan iterasi saat Anda mengetik. Ini menangani kode berulang dengan baik, meskipun Anda tetap harus memverifikasi keunikan kunci dan logika sebelum membangunnya.

Ringkaslah postingan ini dengan: