Petakan di C ++ Standard Template Library (STL) dengan Contoh

Daftar Isi:

Anonim

Apa itu std :: map?

Di C ++, 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 jenis, tetapi jenis anggota menggabungkannya melalui jenis pasangan yang menggabungkan keduanya.

Dalam tutorial C ++ ini, Anda akan mempelajari:

  • Apa itu std :: map?
  • Mengapa menggunakan std :: map?
  • Sintaksis:
  • Jenis anggota:
  • Fungsi Bawaan
  • Iterasi di atas Elemen Peta
  • Memasukkan data di std :: map:
  • Menelusuri di Peta
  • Menghapus Data dari Peta

Mengapa menggunakan std :: map?

Berikut ini alasan penggunaan map:

  • std :: map menyimpan kunci unik hanya dalam urutan yang diurutkan berdasarkan kriteria pengurutan yang dipilih.
  • Mudah dan cepat untuk mencari elemen menggunakan tombol.
  • Hanya satu elemen yang dilampirkan ke setiap kunci.
  • std :: map dapat digunakan sebagai array asosiatif.
  • std :: map dapat diimplementasikan menggunakan pohon biner (balanced).

Sintaksis:

Untuk mendeklarasikan std :: map, gunakan sintaks ini:

std::mapmap_name;
  • Key_datatype menunjukkan tipe data dari kunci peta.
  • Value_datatype menunjukkan tipe data dari nilai yang sesuai dengan kunci peta.
  • Map_name adalah nama peta.

Sebagai contoh:

map my_map;

Kami mendeklarasikan peta bernama my_map. Peta akan memiliki string sebagai tipe data kunci dan integer sebagai tipe data nilai .

Jenis anggota:

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

  • key_type: Key (Parameter pertama dalam template)
  • mapped_type: T (Parameter kedua di template)
  • key_compare: Bandingkan (Parameter ketiga dalam template)
  • Allocator_type: Alloc (Parameter keempat di template)
  • value_type: pasangan
  • value_compare: Kelas fungsi bersarang untuk membandingkan elemen
  • referensi: alokator_tipe :: referensi
  • const_reference: alokasi_type :: const_reference
  • pointer: alokasi_type :: pointer
  • const_pointer: alokasi_type :: const_pointer
  • iterator: iterator dua arah ke value_type
  • const_iterator: iterator dua arah ke nilai_tipe const
  • reverse_iterator: iterator terbalik
  • const_reverse_iterator: iterator terbalik konstan
  • jenis_berbeda : ptrdiff_t
  • size_type [kategori_ukuran]: size_t [ukuran_ukuran]

Fungsi Bawaan

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

  • begin () - Fungsi ini mengembalikan iterator ke item pertama peta.
  • size () - Fungsi ini mengembalikan jumlah item di peta.
  • kosong () - Fungsi ini mengembalikan nilai Boolean yang menunjukkan apakah peta kosong.
  • insert (pair (key, value)) - Fungsi ini memasukkan pasangan nilai kunci baru ke peta.
  • find (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 ditunjukkan oleh iterator.
  • erase (const g) - Fungsi ini menghapus nilai-kunci g dari peta.
  • Hapus () - Fungsi ini menghapus semua item dari peta.

Iterasi di atas Elemen Peta

Anda dapat mengulang elemen peta. Kami hanya perlu membuat iterator dan menggunakannya untuk ini. Sebagai contoh:

Contoh 1:

#include #include #include using namespace std;int main() {map Students;Students.insert(std::pair(200, "Alice"));Students.insert(std::pair(201, "John"));cout << "Map size is: " << Students.size() << endl;cout << endl << "Default map Order is: " << endl;for (map::iterator it = Students.begin(); it != Students.end(); ++it) {cout << (*it).first << ": " << (*it).second << endl;}}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream ke dalam kode kami 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 badan fungsi.
  6. Buat peta bernama Siswa di mana kuncinya adalah bilangan bulat, dan nilainya akan menjadi 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 Siswa. Ini harus mengembalikan 2.
  10. Cetak beberapa teks di konsol.
  11. Gunakan perulangan for untuk membuat iterator yang dinamai iterasi di atas elemen peta bernama Siswa.
  12. Cetak nilai peta Siswa di konsol.
  13. Akhir badan loop for.
  14. Akhir badan fungsi main ().

Memasukkan data di std :: map

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

Jadi, pertama kali memeriksa apakah setiap kunci ada di peta. Jika ada, entri tidak akan disisipkan, tetapi mengembalikan iterator untuk entri yang sudah ada. Jika tidak ada, entri dimasukkan.

Fungsi tersebut memiliki variasi berikut:

  • insert (pair) - dengan variasi ini, pasangan nilai kunci dimasukkan ke dalam peta.
  • insert (start_itr, end_itr) - dengan variasi ini, entri akan dimasukkan dalam rentang yang ditentukan oleh start_itr dan end_itr dari peta lain.

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

Contoh 2:

#include #include using namespace std;int main() {map 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:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya.
  2. Sertakan file header iostream ke dalam kode kami untuk menggunakan fungsinya.
  3. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  4. Panggil fungsi main (). Tanda {menandai awal badan fungsi.
  5. Buat peta bernama m di mana kuncinya adalah bilangan bulat, dan nilainya adalah bilangan bulat. Tiga entri telah dibuat ke dalam peta.
  6. Masukkan 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 mengubah 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 sementara karakter "\ n" menggerakkan kursor mouse ke baris berikutnya.
  10. Gunakan perulangan for untuk membuat iterator bernama itr untuk mengulang elemen peta bernama m.
  11. Cetak nilai peta m di konsol. Karakter "\ t" membuat spasi horizontal antara setiap kunci dan nilainya yang sesuai. Sebaliknya, karakter "\ n" menggerakkan kursor mouse ke baris berikutnya setelah setiap iterasi.
  12. Akhir badan for a loop.
  13. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  14. Akhir badan fungsi main ().

Menelusuri di Peta

Kita bisa menggunakan fungsi find () untuk mencari elemen di peta dengan tombolnya. Jika kunci tidak ditemukan, fungsi akan mengembalikan std :: map :: end. Jika tidak, iterator dari elemen yang dicari akan dikembalikan.

Contoh 2:

#include #include #include using namespace std;int main() {map Students;Students.insert(std::pair(200, "Alice"));Students.insert(std::pair(201, "John"));std::map::iterator it = Students.find(201);if (it != Students.end()) {std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';}}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream ke dalam kode kami untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
  2. Sertakan file header string ke dalam kode kita untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
  3. Sertakan file header peta ke dalam kode kita untuk menggunakan fungsinya tanpa mendapatkan kesalahan.
  4. Sertakan namespace std ke dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi main (). Fungsi {menandai awal dari isi main ().
  6. Buat peta bernama Siswa yang kuncinya adalah 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 untuk kunci tersebut ditemukan.
  11. Cetak nilai kunci di samping beberapa teks di konsol.
  12. Akhir isi pernyataan if.
  13. Akhir badan fungsi main ().

Menghapus Data dari Peta

Kita bisa 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 #include #include using namespace std;int main() {map my_map;my_map.insert(std::make_pair("cow", 1));my_map.insert(std::make_pair("cat", 2));my_map["lion"] = 3;map::iterator it = my_map.find("cat");my_map.erase(it);for (map::iterator it = my_map.begin(); it != my_map.end(); ++it)cout << (*it).first << ": " << (*it).second << endl;return 0;}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream ke dalam kode kami 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 (). {Menandai awal isi dari fungsi main ().
  6. Buat peta bernama my_map yang kuncinya adalah string dan nilai integer.
  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 peta my_map dari awal hingga akhir.
  13. Cetak konten peta my_map di konsol.
  14. Program harus mengembalikan keluaran setelah berhasil diselesaikan.
  15. Akhir badan 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.
  • Di peta, dua nilai yang dipetakan tidak dapat berbagi nilai kunci.
  • Nilai-nilai kunci membantu dalam menyortir dan mengidentifikasi elemen secara unik.
  • Nilai yang dipetakan membantu dalam menyimpan konten yang terkait dengan kunci tersebut.
  • Peta C ++ menyimpan kunci unik dalam urutan yang diurutkan.
  • Untuk bekerja dengan peta C ++, kami membuat iterator untuk mengulang elemen.
  • Dengan iterator, kita dapat melakukan tugas-tugas seperti mencari dan menghapus item dari peta.