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; }