CodeBlanks Logo Icon CodeBlanks

std::accumulate

std::accumulate ile toplu hesap öğrenirsin.

std::accumulate

std::accumulate bir aralıktaki tüm öğeleri birleştirir. Varsayılan olarak toplar: int sum = std::accumulate(v.begin(), v.end(), 0);. Üçüncü parametre başlangıç değeridir; toplama bu değerden başlanır.

std::accumulate <numeric> başlığında tanımlıdır (algorithm'de değil). Başlangıç değeri sonucun türünü belirler: 0 int, 0.0 double toplar. Dördüncü parametre olarak özel bir işlem verebilirsin; örneğin çarpma için std::multiplies<int>(). Böylece accumulate sadece toplamayı değil, genel bir 'fold' (katlama) işlemi yapar.

Başlangıç değeri ve tür

Başlangıç değeri sadece toplamanın başlangıç noktasını değil, sonucun türünü de belirler. 0 yazarsan int toplama, 0.0 yazarsan double toplama yapılır. Double vektörü için 0 yazarsan kesirli kısım kaybolur.

Örnek: std::vector<double> prices = {9.99, 14.50, 3.75}; için std::accumulate(prices.begin(), prices.end(), 0.0) yazarsın. Bu, 28.24 sonucunu verir. Eğer 0 yazarsan sonuç 28 olur (kesir yok). Bu yüzden başlangıç değeri vektörün türüyle uyumlu olmalıdır.

Uygulama Toplamı yazdır

v = {1, 2, 3, 4, 5} vektörünün toplamını std::accumulate ile bul ve std::cout ile yazdır. Başlangıç değeri 0 olsun. #include <numeric> gerektiğini unutma.

Başlangıç kodu

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

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    // std::accumulate ile toplamı yazdır
    return 0;
}

Örnek çözüm

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

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    int sum = std::accumulate(v.begin(), v.end(), 0);
    std::cout << sum;
    return 0;
}

Beklenen çıktı

15

Soru ve cevaplar

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

1 Parçayı rolüne eşle

Kavram Anlamı
std::accumulate Toplama/katlama
v.begin() Aralık başı
v.end() Aralık sonu
0 (üçüncü param) Başlangıç değeri

2 std::accumulate'in üçüncü parametresi nedir?

main.cpp
std::accumulate(v.begin(), v.end(), ???);
  • Son öğe
  • Fonksiyon nesnesi
  • İndeks
  • Başlangıç değeri Doğru cevap

Açıklama: Üçüncü parametre başlangıç değeridir.

3 accumulate çağrısını tamamla

Soru
int sum = std::____(v.begin(), v.end(), 0);
Cevap
int sum = std::accumulate(v.begin(), v.end(), 0);

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

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