Özet - STL algoritmaları
- C++ kursu
- Orta seviye
- Ders 75/116
- 5 dk
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
#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
#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
#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
#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?
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
std::____(sales.begin(), sales.end());
std::sort(sales.begin(), sales.end());
Açıklama: std::sort satışları sıralar.