C++ STL-এ std::for_each-এর মতো দরকারী জেনেরিক ফাংশন রয়েছে। দুর্ভাগ্যবশত এগুলি ব্যবহার করাও বেশ কষ্টকর হতে পারে, বিশেষ করে যদি আপনি যে ফাংশনটি প্রয়োগ করতে চান সেটি নির্দিষ্ট ফাংশনের জন্য অনন্য হয়। সুতরাং এই ফাংশনটি যা আপনি তৈরি করবেন সেই নেমস্পেসে থাকবে শুধুমাত্র সেই একটি জায়গায় ব্যবহার করা হচ্ছে। এর সমাধান হল বেনামী ফাংশন ব্যবহার করা।
বেনামী ফাংশন তৈরি করার জন্য C++ C++ 11-এ ল্যাম্বডা এক্সপ্রেশন চালু করেছে। উদাহরণস্বরূপ,
উদাহরণ
#include<iostream> #include<vector> #include <algorithm> // for_each using namespace std; int main() { vector<int> myvector; myvector.push_back(1); myvector.push_back(2); myvector.push_back(3); for_each(myvector.begin(), myvector.end(), [](int x) { cout << x*x << endl; }); }
আউটপুট
1 4 9
(int x) আর্গুমেন্টগুলিকে সংজ্ঞায়িত করতে ব্যবহৃত হয় যেগুলি দিয়ে ল্যাম্বডা এক্সপ্রেশন বলা হবে। স্থানীয় স্কোপ থেকে ল্যাম্বডার অভ্যন্তরীণ স্কোপে ভেরিয়েবল পাস করতে [] ব্যবহার করা হয়, একে ক্যাপচারিং ভেরিয়েবল বলে। এই অভিব্যক্তিগুলি যদি সহজ হয় তবে তাদের প্রকারগুলি স্বয়ংক্রিয়ভাবে নির্ণয় করতে পারে। এছাড়াও আপনি স্পষ্টভাবে নিম্নলিখিত সিনট্যাক্স ব্যবহার করে প্রকার তথ্য প্রদান করতে পারেন
[](int x) -> double { return x/2.0; }