C++ STL-এ useful জেনেরিক ফাংশন থাকে যেমন std::for_each। দুর্ভাগ্যবশত সেগুলো ব্যবহার করা কয়েকটু কস্টেনশিয়াস হতে পারে, বিশেষ করে যদি ফাংশনটাকে আপনি যেটি প্রয়োগ করতে চান সেটি ঐ নির্দিষ্ট ফাংশনের জন্য ইউনিক হয়। তাহলে আপনি যে ফাংশনটি তৈরি করবেন সেটি সেটি নেমস্পেসে থাকবে শুধু সেই এক জায়গা ব্যবহার হওয়ার জন্য। এসমস্যার সমাধান হচ্ছে অননিমাস ফাংশন ব্যবহার করা।
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) ল্যাম্বডা এক্সপ্রেশনের আর্গুমেন্ট ডিফাইন করতে ব্যবহৃত হয়। [] ব্যবহার করে লোকাল স্কোপ থেকে ভেরিয়েবল INNER স্কোপে পাস করা হয়, এটিকে ক্যাপচারিং ভেরিয়েবল বলা হয়। এই এক্সপ্রেশনগুলো যদি সিম্পল হয়, তবে তাদের টাইপ অটো ডিডিউস করতে পারে। আপনি এক্সপ্লিসিটলি টাইপ ইনফরমেশন ও দিতে পারেন নিচের সিনট্যাক্স দিয়ে
[](int x) -> double { return x/2.0; }