Menu
CoddyTech

Mengakses dan Mengubah Nilai

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

Setelah memiliki map dengan pasangan key-value, kamu sering perlu mengambil atau memperbarui nilai yang tersimpan di dalamnya. Operator tanda kurung siku [] menyediakan cara praktis untuk mengakses nilai yang sudah ada maupun mengubahnya.

Untuk mengakses nilai, cukup gunakan kunci di dalam tanda kurung siku:

std::map<std::string, int> scores;
scores["Alice"] = 95;
int aliceScore = scores["Alice"]; // Mengambil 95

Sintaks yang sama berfungsi untuk memperbarui nilai yang sudah ada:

scores["Alice"] = 98; // Memperbarui skor Alice menjadi 98

Berikut perilaku penting yang perlu diingat: jika kamu menggunakan operator [] dengan kunci yang tidak ada di map, operator tersebut otomatis membuat elemen baru dengan kunci itu dan menginisialisasinya dengan nilai default (0 untuk bilangan bulat, string kosong untuk string, dan sebagainya).

int bobScore = scores["Bob"]; // Membuat "Bob" dengan nilai 0

Fitur pembuatan otomatis ini membuat operator [] sangat praktis untuk membaca dan menulis data map, karena kamu tidak perlu memeriksa apakah sebuah kunci tersedia sebelum menggunakannya.

Kamu juga dapat melakukan iterasi pada semua pasangan kunci-nilai dalam map menggunakan for loop berbasis rentang. Setiap elemen dalam map adalah sebuah pasangan, dengan pair.first menyimpan kunci dan pair.second menyimpan nilainya:

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

Ini akan mencetak setiap pasangan kunci-nilai yang disimpan dalam map, satu pasangan per baris.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem inventaris produk menggunakan std::map. Programmu akan mencatat nama produk dan jumlah stoknya saat ini, sehingga kamu dapat mengakses dan memperbarui tingkat inventaris.

Input berikut akan diberikan:

  • Bilangan bulat n yang menunjukkan jumlah produk awal
  • Kemudian n pasang input:
    • String yang menunjukkan nama produk
    • Bilangan bulat yang menunjukkan jumlah stok awal
  • String yang menunjukkan nama produk yang akan diperbarui
  • Bilangan bulat yang menunjukkan jumlah stok baru untuk produk tersebut

Programmu harus:

  1. Membuat std::map<std::string, int> bernama inventory
  2. Membaca jumlah produk awal
  3. Untuk setiap produk, membaca nama dan jumlah stok, lalu menambahkannya ke map menggunakan notasi tanda kurung siku
  4. Mencetak inventaris awal dengan format yang ditunjukkan di bawah
  5. Membaca nama produk dan jumlah baru untuk diperbarui
  6. Menggunakan operator tanda kurung siku untuk memperbarui jumlah stok produk yang ditentukan
  7. Mencetak inventaris yang telah diperbarui dengan menampilkan tingkat stok yang telah diubah

Gunakan format output berikut secara persis:

Initial Inventory:
[product1]: [quantity1]
[product2]: [quantity2]
[product3]: [quantity3]
...
Updated Inventory:
[product1]: [quantity1]
[product2]: [updated_quantity2]
[product3]: [quantity3]
...

Produk harus dicetak sesuai urutannya saat melakukan iterasi melalui map, yaitu berdasarkan urutan alfabet nama produk. Gunakan for loop berbasis rentang untuk melakukan iterasi melalui map sebanyak dua kali, dengan mengakses setiap pasangan key-value menggunakan pair.first untuk nama produk dan pair.second untuk jumlah stok. Jika nama produk yang akan diperbarui tidak ada di map, operator tanda kurung siku akan otomatis membuat entri baru dengan nama tersebut dan jumlah stok yang ditentukan.

Coba sendiri

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

int main() {
    // Baca jumlah produk awal
    int n;
    cin >> n;
    
    // Buat map inventaris
    map<string, int> inventory;
    
    // Baca produk awal dan jumlahnya
    for (int i = 0; i < n; i++) {
        string product;
        int quantity;
        cin >> product >> quantity;
        // TODO: Tambahkan produk ke map inventaris
    }
    
    // TODO: Tampilkan inventaris awal
    
    // Baca produk yang akan diperbarui dan jumlah barunya
    string updateProduct;
    int newQuantity;
    cin >> updateProduct >> newQuantity;
    
    // TODO: Perbarui jumlah produk di map
    
    // TODO: Tampilkan inventaris yang telah diperbarui
    
    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