CodeBlanks Logo Icon CodeBlanks

Özet - STL algoritmaları

sort, find ve accumulate'i birleştirerek bir satış raporu yazarsın.

Özet - STL algoritmaları

Bu grupta std::sort, std::find, std::count, std::transform ve std::accumulate algoritmalarını öğrendin. Şimdi bunları bir satış raporunda birleştireceğiz.

Bir satış vektörü üzerinde önce std::sort ile sıralama, sonra std::find ile belirli bir satışı arama yapacağız. İkinci adımda std::accumulate ile toplam satışı hesaplayacağız. Bu, STL algoritmalarının gerçek bir senaryoda nasıl birlikte çalıştığını gösterir.

Uygulama Satışları sırala ve ara

sales = {150, 80, 200, 90} vektörünü std::sort ile artan sırala. Sonra std::find ile 150'yi ara ve bulunursa "bulundu" yazdır. Sıralı listeyi yazdırma; yalnızca arama sonucunu yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> sales = {150, 80, 200, 90};
    // std::sort ile sırala, std::find ile 150'yi ara, sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> sales = {150, 80, 200, 90};
    std::sort(sales.begin(), sales.end());
    auto it = std::find(sales.begin(), sales.end(), 150);
    if (it != sales.end()) {
        std::cout << "bulundu";
    }
    return 0;
}

Beklenen çıktı

bulundu

Uygulama Toplam satışı hesapla

Önceki adımın std::sort ve std::find çağrılarını al. #include <numeric> ekle ve std::accumulate ile sales vektörünün toplamını hesaplayıp yazdır. "bulundu" mesajından sonra yeni satıra toplamı yaz.

Başlangıç kodu

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

int main() {
    std::vector<int> sales = {150, 80, 200, 90};
    std::sort(sales.begin(), sales.end());
    auto it = std::find(sales.begin(), sales.end(), 150);
    if (it != sales.end()) {
        std::cout << "bulundu";
    }
    // std::accumulate ile toplamı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

int main() {
    std::vector<int> sales = {150, 80, 200, 90};
    std::sort(sales.begin(), sales.end());
    auto it = std::find(sales.begin(), sales.end(), 150);
    if (it != sales.end()) {
        std::cout << "bulundu";
    }
    int total = std::accumulate(sales.begin(), sales.end(), 0);
    std::cout << total;
    return 0;
}

Beklenen çıktı

bulundu520

STL algoritmaları özet

STL algoritmaları kapsayıcılar üzerinde çalışan genel işlevlerdir. std::sort sıralar, std::find arar, std::count sayar, std::transform dönüştürür, std::accumulate toplar. Hepsi iterator aralığıyla çalışır.

Bu algoritmaların gücü, kapsayıcı türünden bağımsız olmalarıdır. Aynı std::sort hem std::vector hem std::array üzerinde çalışır. Bir sonraki grupta lambda ifadelerini öğreneceksin; bu, STL algoritmalarına koşul ve işlem geçirmeyi çok daha güçlü hale getirecek.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir vektörün toplamını bulmak için hangi algoritma?

main.cpp
std::vector<int> sales = {150, 80, 200};
  • std::accumulate Doğru cevap
  • std::sort
  • std::find
  • std::count

Açıklama: std::accumulate öğeleri toplar.

2 sort çağrısını tamamla

Soru
std::____(sales.begin(), sales.end());
Cevap
std::sort(sales.begin(), sales.end());

Açıklama: std::sort satışları sıralar.

Orta seviye bölümündeki tüm dersler