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; }
C++ लैम्ब्डा को विस्तार से जानने के लिए इस StackOverflow थ्रेड पर जाएं: https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11