Menu
CoddyTech

Menghapus Pasangan

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 27 dari 56.

Terkadang kamu perlu menghapus pasangan kunci-nilai dari map saat tidak lagi diperlukan. Method .erase() menyediakan cara mudah untuk menghapus elemen dengan menentukan kunci yang ingin kamu hapus.

Untuk menghapus sebuah elemen dari map, cukup panggil .erase() dengan kunci sebagai argumen:

std::map<std::string, int> scores;
scores["Alice"] = 95;
scores["Bob"] = 87;
scores["Carol"] = 92;

scores.erase("Bob"); // Menghapus entri Bob sepenuhnya

Setelah memanggil erase("Bob"), map hanya akan berisi nilai Alice dan Carol. Jika kamu mencoba menghapus kunci yang tidak ada di map, operasi tersebut tidak melakukan apa pun, dan tidak terjadi error.

Saat melakukan iterasi pada map dengan for loop berbasis rentang, setiap elemen adalah std::pair yang berisi key dan value. Kamu dapat mengakses key dengan .first dan value dengan .second:

for (auto pair : scores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Ini akan mencetak setiap nama dan skor dalam urutan alfabetis, karena std::map mengurutkan kuncinya secara otomatis.

Method ini sangat berguna untuk menjaga struktur data tetap rapi, menghapus informasi yang sudah usang, atau menerapkan fitur yang memungkinkan pengguna menghapus entri dari aplikasi kamu.

challenge icon

Tantangan

Mudah

Buat program yang mengelola direktori kontak menggunakan std::map. Programmu akan menyimpan nama kontak dan nomor telepon, lalu memungkinkan pengguna menghapus kontak tertentu dari direktori menggunakan method .erase().

Input berikut akan diberikan:

  • Bilangan bulat n yang menunjukkan jumlah kontak awal
  • Kemudian n pasang input:
    • String yang menunjukkan nama kontak
    • String yang menunjukkan nomor telepon
  • Bilangan bulat m yang menunjukkan jumlah kontak yang akan dihapus
  • Kemudian m string yang menunjukkan nama kontak yang akan dihapus

Programmu harus:

  1. Membuat std::map<std::string, std::string> bernama contacts
  2. Membaca jumlah kontak awal dan mengisi map dengan nama kontak serta nomor telepon
  3. Mencetak direktori kontak awal dengan format yang ditunjukkan di bawah
  4. Membaca jumlah kontak yang akan dihapus
  5. Untuk setiap nama kontak yang akan dihapus, menggunakan method .erase() untuk menghapusnya dari map
  6. Mencetak direktori kontak yang telah diperbarui setelah semua penghapusan

Gunakan format output persis seperti berikut:

Direktori awal:

Initial Contact Directory:
[contact1]: [phone1]
[contact2]: [phone2]
[contact3]: [phone3]
...

Direktori yang diperbarui setelah penghapusan:

Updated Contact Directory:
[remaining_contact1]: [phone1]
[remaining_contact2]: [phone2]
...

Jika direktori kosong setelah semua kontak dihapus, cetak:

Updated Contact Directory:
Directory is empty

Kontak harus dicetak sesuai urutannya saat melakukan iterasi melalui map (berdasarkan urutan alfabet nama kontak). Gunakan perulangan for berbasis rentang untuk melakukan iterasi melalui map pada kedua kesempatan, dengan mengakses setiap pasangan kunci-nilai menggunakan pair.first untuk nama kontak dan pair.second untuk nomor telepon. Ingat, mencoba menghapus kontak yang tidak ada tidak akan menyebabkan error, map hanya akan tetap tidak berubah.

Coba sendiri

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Baca jumlah kontak awal
    int n;
    cin >> n;
    
    // Buat map contacts
    map<string, string> contacts;
    
    // Baca kontak awal
    for (int i = 0; i < n; i++) {
        string name, phone;
        cin >> name >> phone;
        // TODO: Tambahkan kontak ke map
    }
    
    // Tampilkan direktori awal
    cout << "Initial Contact Directory:" << endl;
    // TODO: Tampilkan semua kontak menggunakan range-based for loop
    
    // Baca jumlah kontak yang akan dihapus
    int m;
    cin >> m;
    
    // Hapus kontak
    for (int i = 0; i < m; i++) {
        string nameToRemove;
        cin >> nameToRemove;
        // TODO: Hapus kontak menggunakan method .erase()
    }
    
    // Tampilkan direktori terbaru
    cout << "Updated Contact Directory:" << endl;
    // TODO: Tampilkan kontak yang tersisa atau "Directory is empty" jika kosong
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online