Map Değer Arama
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 55 / 56.
Görev
KolayBir map içindeki belirli bir değerle ilişkili tüm anahtarları bulmak için ters arama sistemi uygulayan bir program oluşturun. Bu zorluk, anahtar-değer çiftleri arasında verimli bir şekilde arama yapmak için map iterasyonu, değer karşılaştırması ve vektör oluşturma yeteneklerinizi test edecektir.
Aşağıdaki girdiler sağlanacaktır:
- Map'e eklenecek anahtar-değer çiftlerinin sayısını temsil eden bir tam sayı
n - Ardından her biri şunlardan oluşan
nçift girdi:- Anahtarı temsil eden bir string
key - Değeri temsil eden bir tam sayı
value
- Anahtarı temsil eden bir string
- Aranacak değeri temsil eden bir tam sayı
targetValue
Programınız şunları yapmalıdır:
- Parametre olarak bir
std::map<std::string, int>ve bir tam sayı alanfindKeysWithValueadında bir fonksiyon oluşturun - Fonksiyon, belirtilen değere sahip tüm anahtarları içeren bir
std::vector<std::string>döndürmelidir - Ana fonksiyonda (main function), bir map oluşturun ve onu girdi anahtar-değer çiftleriyle doldurun
- Map ve hedef değer ile
findKeysWithValuefonksiyonunu çağırın - Önce eşleşen anahtarların sayısını yazdırın, ardından her bir eşleşen anahtarı ayrı bir satıra yazdırın
Aşağıdaki tam çıktı formatını kullanın:
İlk satır - eşleşen anahtarların sayısı:
Keys found: [number_of_matching_keys]Ardından her bir eşleşen anahtar ayrı satırlarda:
[matching_key_1]
[matching_key_2]
...Hedef değere sahip hiçbir anahtar yoksa, sadece şunu yazdırın:
Keys found: 0findKeysWithValue fonksiyonunuzun yeni bir boş vektör oluşturması, aralık tabanlı bir for döngüsü (range-based for loop) kullanarak map üzerinde gezinmesi ve her bir çiftin değerini hedefe karşı kontrol etmek için bir if ifadesi kullanması gerektiğini unutmayın. Bir eşleşme bulunduğunda, anahtarı (pair.first üzerinden erişilen) push_back() kullanarak sonuç vektörüne ekleyin. Fonksiyon, tüm eşleşen anahtarları içeren vektörü döndürmelidir.
Kendin dene
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
// YAPILACAK: findKeysWithValue fonksiyonunuzu buraya yazın
int main() {
// Anahtar-değer çifti sayısını oku
int n;
cin >> n;
// Anahtar-değer çiftlerini saklamak için map oluştur
map<string, int> keyValueMap;
// n adet anahtar-değer çiftini oku
for (int i = 0; i < n; i++) {
string key;
int value;
cin >> key >> value;
keyValueMap[key] = value;
}
// Aranacak hedef değeri oku
int targetValue;
cin >> targetValue;
// YAPILACAK: findKeysWithValue fonksiyonunuzu çağırın ve sonucu saklayın
// YAPILACAK: Sonuçları istenen formatta yazdırın
// Önce "Keys found: [count]" yazdırın
// Ardından eşleşen her anahtarı ayrı satırlarda yazdırın
return 0;
}Mantık & Akış bölümündeki tüm dersler
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme