C++ STL-এ <numeric> হেডারের accumulate ফাংশন ব্যবহার করে অ্যারের সব উপাদানের গুণফল (প্রোডাক্ট) বের করা যায়। ডিফল্টভাবে এটি যোগ (sum) করে, কিন্তু কাস্টম বাইনারি অপারেশন দিয়ে গুণও করা যায়।
এলগরিদম
শুরু অ্যারে ভ্যালু ইনিশিয়ালাইজ করুন accumulate ফাংশন কল করুন multiplies<int>() দিয়ে ফলাফল প্রিন্ট করুন শেষ
উদাহরণ কোড
#include <iostream>
#include <numeric> // accumulate, multiplies এর জন্য
using namespace std;
int ProductOfArray(int p[], int n) {
// accumulate(শুরু, শেষ, ইনিশিয়াল ভ্যালু, বাইনারি অপ)
return accumulate(p, p + n, 1, multiplies<int>());
}
int main() {
int m[] = {6, 7};
int n = sizeof(m) / sizeof(m[0]);
cout << "Product of the Array is: " << ProductOfArray(m, n);
return 0;
}
আউটপুট
Product of the Array is: 42
ব্যাখ্যা:
accumulate(p, p+n, 1, multiplies<int>())— এখানে1হলো ইনিশিয়াল ভ্যালু (গুণের অভেদ)।multiplies<int>()হলো একটি ফাংশন অবজেক্ট (functor) যাoperator*অপারেশন করে।- অন্যান্য অপারেশনের জন্য:
plus<>()(যোগ),minus<>()(বিয়োগ),divides<>()(ভাগ)। - C++17-এ
std::reduceপ্যারালেল এক্সিকিউশন সাপোর্ট করে।