Melakukan Perulangan pada Map
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 28 dari 56.
Sekarang setelah kamu tahu cara membuat, mengubah, dan menghapus elemen dari map, mari pelajari cara menelusuri semua pasangan key-value di map-mu. for loop berbasis range menyediakan cara yang elegan untuk mengiterasi setiap elemen dalam std::map.
Berikut sintaks dasar untuk melakukan perulangan pada map:
for (auto pair : myMap) {
// Akses kunci dengan pair.first
// Akses nilai dengan pair.second
}Setiap elemen dalam perulangan adalah object pasangan yang memiliki dua anggota penting: first menyimpan kunci, dan second menyimpan nilai. Berikut contoh praktis:
std::map<std::string, int> scores;
scores["Alice"] = 95;
scores["Bob"] = 87;
scores["Carol"] = 92;
for (auto pair : scores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Ini akan mencetak nama setiap siswa diikuti nilainya. Kata kunci auto secara otomatis menentukan tipe yang tepat untuk setiap pasangan, sehingga kodemu lebih rapi dan mudah dibaca.
Tantangan
MudahBuat program yang mengelola sistem menu restoran menggunakan std::map. Programmu akan menyimpan item menu beserta harganya, lalu menampilkan seluruh menu dengan melakukan iterasi melalui semua pasangan kunci-nilai.
Input berikut akan diberikan:
- Bilangan bulat
nyang menunjukkan jumlah item menu - Lalu
npasang input:- String yang menunjukkan nama hidangan
- Nilai double yang menunjukkan harga hidangan
Programmu harus:
- Membuat
std::map<std::string, double>bernamamenu - Membaca jumlah item menu
- Untuk setiap item menu, membaca nama hidangan dan harganya, lalu menambahkannya ke map menggunakan notasi kurung siku
- Menggunakan range-based for loop untuk melakukan iterasi melalui seluruh map dan mencetak setiap hidangan beserta harganya
- Menghitung dan mencetak jumlah total item dalam menu
Gunakan format output persis berikut:
Restaurant Menu:
[dish1]: $[price1]
[dish2]: $[price2]
[dish3]: $[price3]
...
Total menu items: [number of items]Item menu harus dicetak sesuai urutannya saat melakukan iterasi melalui map, yaitu berdasarkan urutan alfabetis nama hidangan. Gunakan range-based for loop dengan auto pair : menu untuk melakukan iterasi melalui map, dengan mengakses setiap pasangan kunci-nilai menggunakan pair.first untuk nama hidangan dan pair.second untuk harganya. Cetak setiap harga dengan tepat 2 angka desimal menggunakan std::fixed dan std::setprecision(2).
Coba sendiri
#include <iostream>
#include <map>
#include <string>
#include <iomanip>
using namespace std;
int main() {
// Baca jumlah item menu
int n;
cin >> n;
// Buat map menu
map<string, double> menu;
// Baca item menu dan harganya
for (int i = 0; i < n; i++) {
string dish;
double price;
cin >> dish >> price;
// TODO: Tambahkan dish dan price ke map menu
}
// TODO: Cetak judul "Restaurant Menu:"
// TODO: Gunakan range-based for loop untuk menelusuri menu dan mencetak setiap item
// Format: [dish]: $[price] dengan 2 angka di belakang koma
// TODO: Cetak jumlah seluruh item menu
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer4Map (Pasangan Kunci-Nilai)
Mengenal std::mapMembuat MapMengakses dan Mengubah NilaiMemeriksa KunciMenghapus PasanganMelakukan Perulangan pada MapRangkuman: Frekuensi Kata2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online