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
The (int x) का उपयोग उन तर्कों को परिभाषित करने के लिए किया जाता है जिनके साथ लैम्ब्डा एक्सप्रेशन को कॉल किया जाएगा। [] का उपयोग स्थानीय दायरे से लैम्ब्डा के आंतरिक दायरे में चर को पारित करने के लिए किया जाता है, इसे कैप्चरिंग चर कहा जाता है। ये भाव यदि सरल हैं, तो उनके प्रकारों को स्वतः घटा सकते हैं। आप निम्न सिंटैक्स का उपयोग करके स्पष्ट रूप से प्रकार की जानकारी भी प्रदान कर सकते हैं -
सिंटैक्स
[](int x) -> double { return x/2.0; }
C++ लैम्ब्डा को विस्तार से जानने के लिए इस StackOverflow थ्रेड पर जाएं - https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11