Menu
Coddy logo textTech

Map Üzerinde Yineleme

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 28 / 56.

Bir map'ten öğe oluşturmayı, değiştirmeyi ve kaldırmayı öğrendiğinize göre, şimdi map'inizdeki tüm anahtar-değer çiftlerinin üzerinden nasıl geçeceğinizi öğrenelim. Aralığa dayalı (range-based) for döngüsü, bir std::map içindeki her öğe üzerinde yineleme yapmak için zarif bir yol sunar.

Bir map üzerinde yineleme yapmak için temel sözdizimi şöyledir:

for (auto pair : myMap) {
    // Anahtara pair.first ile erişin
    // Değere pair.second ile erişin
}

Döngüdeki her bir öğe, iki önemli üye içeren bir pair nesnesidir: first anahtarı tutar ve second değeri tutar. İşte pratik bir örnek:

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;
}

Bu, her öğrencinin adını ve ardından puanını yazdıracaktır. auto anahtar kelimesi, her çift için doğru türü otomatik olarak belirleyerek kodunuzu daha temiz ve okunması daha kolay hale getirir.

challenge icon

Görev

Kolay

Bir std::map kullanarak bir restoran menü sistemini yöneten bir program oluşturun. Programınız menü öğelerini ve fiyatlarını saklayacak, ardından tüm anahtar-değer çiftleri arasında gezinerek tam menüyü görüntüleyecektir.

Aşağıdaki girdiler sağlanacaktır:

  • Menü öğelerinin sayısını temsil eden bir tam sayı n
  • Ardından n çift girdi:
    • Yemek adını temsil eden bir dize (string)
    • Yemeğin fiyatını temsil eden bir double

Programınız şunları yapmalıdır:

  1. menu adında bir std::map<std::string, double> oluşturun
  2. Menü öğelerinin sayısını okuyun
  3. Her menü öğesi için yemek adını ve fiyatını okuyun, ardından bunları köşeli parantez notasyonunu kullanarak haritaya (map) ekleyin
  4. Tüm harita üzerinde gezinmek ve her yemeği fiyatıyla birlikte yazdırmak için aralık tabanlı (range-based) bir for döngüsü kullanın
  5. Menüdeki toplam öğe sayısını hesaplayın ve yazdırın

Aşağıdaki tam çıktı formatını kullanın:

Restaurant Menu:
[dish1]: $[price1]
[dish2]: $[price2]
[dish3]: $[price3]
...
Total menu items: [number of items]

Menü öğeleri, harita üzerinde gezinirken göründükleri sırada (yemek adına göre alfabetik sıra) yazdırılmalıdır. Harita üzerinde gezinmek için auto pair : menu ile aralık tabanlı bir for döngüsü kullanın; yemek adı için pair.first ve fiyat için pair.second ile her bir anahtar-değer çiftine erişin. Her fiyatı std::fixed ve std::setprecision(2) kullanarak tam olarak 2 ondalık basamakla yazdırın.

Kopya kağıdı

Bir std::map içindeki tüm anahtar-değer çiftleri üzerinde gezinmek için aralık tabanlı (range-based) bir for döngüsü kullanın:

for (auto pair : myMap) {
    // pair.first ile anahtara erişin
    // pair.second ile değere erişin
}

Her öğe, first kısmının anahtarı ve second kısmının değeri tuttuğu bir pair nesnesidir:

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;
}

auto anahtar kelimesi, her bir çift için doğru türü otomatik olarak belirler.

Kendin dene

#include <iostream>
#include <map>
#include <string>
#include <iomanip>
using namespace std;

int main() {
    // Menü öğelerinin sayısını oku
    int n;
    cin >> n;
    
    // Menü haritasını (map) oluştur
    map<string, double> menu;
    
    // Menü öğelerini ve fiyatlarını oku
    for (int i = 0; i < n; i++) {
        string dish;
        double price;
        cin >> dish >> price;
        // TODO: Yemeği ve fiyatı menü haritasına ekle
    }
    
    // TODO: "Restaurant Menu:" başlığını yazdır
    
    // TODO: Menüde gezinmek ve her bir öğeyi yazdırmak için aralık tabanlı for döngüsü kullan
    // Format: [dish]: $[price] (2 ondalık basamak ile)
    
    // TODO: Toplam menü öğesi sayısını yazdır
    
    return 0;
}
quiz iconKendini test et

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