Bir Map Oluşturma
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 24 / 56.
Artık bir map'in ne olduğunu anladığına göre, şimdi nasıl oluşturulacağını ve ona anahtar-değer çiftlerinin nasıl ekleneceğini öğrenelim. Bir std::map bildirirken, açılı parantezleri kullanarak hem anahtar türünü hem de değer türünü belirtmen gerekir.
Bir map oluşturmak için temel söz dizimi şöyledir:
std::map<KeyType, ValueType> mapName;Örneğin, öğrenci adlarını anahtar ve sınav puanlarını değer olarak depolayan bir map oluşturmak için:
std::map<std::string, int> studentScores;Haritanıza öğeler eklemek için anahtarla birlikte köşeli parantez gösterimini kullanabilir, ardından bir değer atayabilirsiniz:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Bu, haritada üç anahtar-değer çifti oluşturur. Her öğrencinin adı, ilgili puanını hızlıca almanızı sağlayan anahtar görevi görür.
Bir map'teki tüm öğeler üzerinde yineleme yapmak için range tabanlı for döngüsünü auto ile kullanabilirsiniz. Bir std::map'teki her öğe bir anahtar-değer çiftidir ve anahtara .first, değere ise .second kullanarak erişebilirsiniz:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Burada, auto her bir öğenin (bir anahtar-değer çifti) türünü otomatik olarak çıkarır, pair.first size anahtarı (öğrencinin adını), pair.second ise değeri (puanı) verir. std::map öğelerini anahtara göre otomatik olarak sıralı tuttuğundan, harita üzerinde yineleme yapmanın girdileri alfabetik sırayla yazdıracağını unutmayın.
Görev
Kolaystd::map kullanarak bir öğrenci not takip sistemi oluşturan bir program yazın. Programınız, öğrenci adlarını anahtar ve sınav puanlarını değer olarak depolayacaktır.
Aşağıdaki girdiler sağlanacaktır:
- Öğrenci sayısını temsil eden bir
ntamsayısı - Ardından
ngirdi çifti:- Öğrencinin adını temsil eden bir dize
- Öğrencinin puanını temsil eden bir tamsayı
Programınız şunları yapmalıdır:
std::map<std::string, int>adlı birgradesoluşturun- Öğrenci sayısını okuyun
- Her öğrenci için adını ve puanını okuyun, ardından köşeli parantez gösterimini kullanarak bunları map'e ekleyin
- Tüm öğrencileri ekledikten sonra, aşağıda gösterilen biçimde her öğrencinin bilgilerini yazdırın
- Map'te depolanan toplam öğrenci sayısını hesaplayıp yazdırın
Aşağıdaki tam çıktı biçimini kullanın:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]Öğrenciler, map üzerinde yineleme yapılırken göründükleri sırayla yazdırılmalıdır (map'ler anahtara göre otomatik olarak sıralandığından bu sıra alfabetik olacaktır). Map üzerinde yineleme yapmak için aralık tabanlı bir for döngüsü kullanın; her anahtar-değer çiftine erişin ve öğrencinin adını, ardından puanını yazdırın.
Kendin dene
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Öğrenci sayısını oku
int n;
cin >> n;
// Notları saklamak için map oluştur
map<string, int> grades;
// TODO: Kodunu buraya yaz
// Her öğrencinin adını ve puanını oku, sonra map'e ekle
// Sonuçları yazdır
cout << "Student Grades:" << endl;
// TODO: Her öğrencinin notunu yazdırmak için range-based for döngüsü kullan
// Toplam öğrenci sayısını yazdır
cout << "Total students: " << grades.size() << endl;
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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ği4Map'ler (Anahtar-Değer Çiftleri)
std::map'e GirişBir Map OluşturmaDeğerlere Erişme ve DeğiştirmeAnahtar KontrolüÇiftleri KaldırmaMap Üzerinde YinelemeÖzet - Kelime Frekansı2Vektö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