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 haritadaki belirli bir değerle ilişkilendirilmiş tüm anahtarları bulmak için ters arama sistemi uygulayan bir program oluşturun. Bu meydan okuma, anahtar-değer çiftleri arasında verimli bir şekilde arama yapmak için harita üzerinde yineleme, değer karşılaştırma ve vektör oluşturma becerinizi test edecektir.
Aşağıdaki girdiler sağlanacaktır:
- Haritaya eklenecek anahtar-değer çiftlerinin sayısını temsil eden bir tamsayı
n - Ardından, her biri şunlardan oluşan
ngirdi çifti:- Anahtarı temsil eden bir dize
key - Değeri temsil eden bir tamsayı
value
- Anahtarı temsil eden bir dize
- Aranacak değeri temsil eden bir tamsayı
targetValue
Programınız şunları yapmalıdır:
- Parametre olarak bir
findKeysWithValueve bir tamsayı alanstd::map<std::string, int>adlı bir işlev oluşturun - İşlev, belirtilen değere sahip tüm anahtarları içeren bir
std::vector<std::string>döndürmelidir - main işlevinde bir harita oluşturun ve bunu girdi anahtar-değer çiftleriyle doldurun
findKeysWithValueişlevini harita ve hedef değer ile çağırın- Önce eşleşen anahtarların sayısını, ardından her eşleşen anahtarı ayrı bir satırda yazdırın
Aşağıdaki tam çıktı biçimini kullanın:
İlk satır - eşleşen anahtarların sayısı:
Keys found: [number_of_matching_keys]Ardından her eşleşen anahtarı ayrı satırlarda yazdırın:
[matching_key_1]
[matching_key_2]
...Hedef değere sahip hiçbir anahtar yoksa yalnızca şunu yazdırın:
Keys found: 0findKeysWithValue işlevinizin yeni ve boş bir vektör oluşturması, aralık tabanlı bir for döngüsü kullanarak harita üzerinde yineleme yapması ve her çiftin değerini hedef değerle karşılaştırmak için bir if ifadesi kullanması gerektiğini unutmayın. Bir eşleşme bulunduğunda, anahtarı (pair.first aracılığıyla erişilir) push_back() kullanarak sonuç vektörüne ekleyin. İşlev, eşleşen tüm 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 EklemeKendi başına pratik yap: Online C++ derleyicisi