Menu
Coddy logo textTech

Küme Üzerinde Yineleme

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

Bir kümeden eleman eklemeyi, kontrol etmeyi ve çıkarmayı öğrendiğinize göre, şimdi bir kümedeki tüm elemanlar üzerinde nasıl gezineceğimizi (iterate) öğrenelim. Aralık tabanlı for döngüsü (range-based for loop), her bir elemanı ziyaret etmenin en temiz yolunu sunar.

Bir set üzerinde şu şekilde döngü kurabilirsiniz:

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

Hatırlanması gereken en önemli özellik, set'lerin sıralı düzeni otomatik olarak korumasıdır. Yukarıdaki fruits set'i üzerinde gezindiğinizde, çıktı ekleme sıranız değil, "apple", "banana", "cherry" şeklinde olacaktır. Bu otomatik sıralama, std::set kullanmanın temel avantajlarından biridir.

Bu sıralı yineleme, verileri manuel olarak sıralamaya gerek kalmadan alfabetik veya sayısal sırada görüntülemek için kümeleri mükemmel kılar. İster sayılarla, dizelerle (strings) ister diğer karşılaştırılabilir türlerle çalışıyor olun, küme bunları her zaman kendi doğal sıralı dizilerinde sunacaktır.

challenge icon

Görev

Kolay

Bir kümeye kelimeler ekleyerek ve ardından bunları alfabetik sırayla görüntülemek için üzerlerinde gezinerek std::set yapısının otomatik sıralama özelliğini gösteren bir program oluşturun. Bu zorluk, kümelerle birlikte aralık tabanlı (range-based) for döngülerini ve kümelerin sıralı düzeni nasıl koruduğunu anlama yeteneğinizi test edecektir.

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

  • Kümeye eklenecek kelime sayısını temsil eden bir tam sayı n
  • Ardından kümeye eklenecek kelimeleri temsil eden n adet dize (string)

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

  1. Boş bir std::set<std::string> oluşturun
  2. Eklenecek kelime sayısını okuyun
  3. Her bir kelimeyi okumak ve .insert() metodunu kullanarak kümeye eklemek için bir döngü kullanın
  4. Küme üzerinde gezinmek ve her kelimeyi yazdırmak için aralık tabanlı bir for döngüsü kullanın
  5. Tüm kelimeleri yazdırdıktan sonra, kümedeki benzersiz kelimelerin toplam sayısını görüntüleyin

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

Kümedeki her kelime için (alfabetik sırayla):

[word]

Sonundaki özet:

Total unique words: [count]

Kümedeki tüm öğeler üzerinde gezinmek için for (const std::string& word : wordSet) sözdizimine sahip aralık tabanlı bir for döngüsü kullanın. Küme, kelimeleri otomatik olarak alfabetik sırayla sunarak std::set kullanmanın temel avantajlarından birini gösterecektir. Girdide yinelenen kelimeler verilirse, bunların küme tarafından otomatik olarak yoksayılacağını ve böylece yalnızca benzersiz kelimelerin görüntüleneceğini unutmayın.

Kopya kağıdı

Bir kümedeki (set) tüm öğeler üzerinde yineleme yapmak için aralık tabanlı (range-based) bir for döngüsü kullanın:

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

Kümeler (sets), yineleme sırasında sıralı düzeni otomatik olarak korur. Öğeler, ekleme sırasına göre değil, doğal sıralı dizilerine göre (dizeler için alfabetik, sayılar için sayısal) görüntülenir.

Kendin dene

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main() {
    // Kelime sayısını oku
    int n;
    cin >> n;
    
    // Kelimeleri saklamak için boş bir küme oluştur
    set<string> wordSet;
    
    // YAPILACAK: Kodunuzu buraya yazın
    // n adet kelimeyi oku ve bunları kümeye ekle
    // Küme üzerinde gezinmek ve her kelimeyi yazdırmak için aralık tabanlı bir for döngüsü kullanın
    // Benzersiz kelimelerin toplam 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