ফাংশন অবজেক্ট (Functor) কী?
ফাংশন অবজেক্ট বা ফাংশন্টার (Functor) হলো এমন একটি ক্লাস যার অবজেক্টকে ফাংশনের মতো কল করা যায়। এর জন্য operator() ওভারলোড করা হয়। এটি স্টেটফুল (stateful) হতে পারে, অর্থাৎ ডেটা ধারণ করতে পারে।
উদাহরণ: স্কোয়ার ফাংশন্টার
#include <iostream>
#include <algorithm>
using namespace std;
struct Square {
int operator()(int x) const { return x * x; }
};
int main() {
int data[10] = {0,1,2,3,4,5,6,7,8,9};
Square sq;
transform(data, data+10, data, sq); // sq ফাংশন্টার হিসেবে ব্যবহার
for (int x : data) cout << x << " ";
return 0;
}
আউটপুট
0 1 4 9 16 25 36 49 64 81
লাভ: সাধারণ ফাংশন পয়েন্টারের চেয়ে দ্রুত (ইনলাইনিং সম্ভব), স্টেট ধারণ করতে পারে, STL অ্যালগরিদমের সাথে স্মুথলি কাজ করে।