Pencarian Nilai Map
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 55 dari 56.
Tantangan
MudahBuat program yang menerapkan sistem pencarian terbalik untuk menemukan semua kunci yang terkait dengan nilai tertentu dalam map. Tantangan ini akan menguji kemampuanmu menggabungkan iterasi map, perbandingan nilai, dan penyusunan vector untuk mencari pasangan kunci-nilai secara efisien.
Input berikut akan diberikan:
- Integer
nyang mewakili jumlah pasangan kunci-nilai yang akan ditambahkan ke map - Kemudian
npasang input, yang masing-masing terdiri dari:- String
keyyang mewakili kunci - Integer
valueyang mewakili nilai
- String
- Integer
targetValueyang mewakili nilai yang akan dicari
Programmu harus:
- Membuat fungsi bernama
findKeysWithValueyang menerimastd::map<std::string, int>dan integer sebagai parameter - Fungsi tersebut harus mengembalikan
std::vector<std::string>yang berisi semua kunci dengan nilai yang ditentukan - Di fungsi main, membuat map dan mengisinya dengan pasangan kunci-nilai dari input
- Memanggil fungsi
findKeysWithValuedengan map dan nilai target - Mencetak jumlah kunci yang cocok terlebih dahulu, lalu mencetak setiap kunci yang cocok pada baris terpisah
Gunakan format output persis berikut:
Baris pertama, jumlah kunci yang cocok:
Keys found: [number_of_matching_keys]Lalu setiap kunci yang cocok pada baris terpisah:
[matching_key_1]
[matching_key_2]
...Jika tidak ada kunci yang memiliki nilai target, cetak hanya:
Keys found: 0Ingat bahwa fungsi findKeysWithValue harus membuat vector kosong baru, melakukan iterasi pada map menggunakan for loop berbasis rentang, dan menggunakan pernyataan if untuk memeriksa nilai setiap pasangan terhadap target. Saat menemukan kecocokan, tambahkan kunci tersebut, yang diakses melalui pair.first, ke vector hasil menggunakan push_back(). Fungsi tersebut harus mengembalikan vector yang berisi semua kunci yang cocok.
Coba sendiri
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
// TODO: Tulis fungsi findKeysWithValue-mu di sini
int main() {
// Baca jumlah pasangan kunci-nilai
int n;
cin >> n;
// Buat map untuk menyimpan pasangan kunci-nilai
map<string, int> keyValueMap;
// Baca n pasangan kunci-nilai
for (int i = 0; i < n; i++) {
string key;
int value;
cin >> key >> value;
keyValueMap[key] = value;
}
// Baca nilai target yang akan dicari
int targetValue;
cin >> targetValue;
// TODO: Panggil fungsi findKeysWithValue-mu dan simpan hasilnya
// TODO: Cetak hasilnya dalam format yang diminta
// Pertama, cetak "Keys found: [count]"
// Lalu, cetak setiap kunci yang cocok pada baris terpisah
return 0;
}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 Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online