Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++11 में लैम्ब्डा एक्सप्रेशन क्या है?


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




  1. सी # में ओवरलोडिंग क्या है?

    C# स्थैतिक बहुरूपता को लागू करने के लिए दो तकनीकें प्रदान करता है - फंक्शन ओवरलोडिंग ऑपरेटर ओवरलोडिंग फंक्शन ओवरलोडिंग समान नाम वाली दो या दो से अधिक विधियाँ लेकिन अलग-अलग पैरामीटर जिन्हें हम C# में फंक्शन ओवरलोडिंग कहते हैं। C# में फ़ंक्शन ओवरलोडिंग तर्कों की संख्या और डेटा प्रकार के तर्कों को

  1. सी#में एन्यूमरेशन क्या है?

    Enum एक वर्ष, उत्पाद, महीने, मौसम, आदि जैसे नामित स्थिरांक के एक सेट को संग्रहीत करने के लिए गणना है। Enum स्थिरांक का डिफ़ॉल्ट मान 0 और वेतन वृद्धि से प्रारंभ होता है। इसमें स्थिरांक का एक निश्चित सेट होता है और इसे आसानी से पार किया जा सकता है। आइए एक उदाहरण देखें। हमने इस तरह से एनम सेट किया ह

  1. पाइथन में लैम्ब्डा बाइंडिंग क्या है?

    जब कोई प्रोग्राम या फ़ंक्शन स्टेटमेंट निष्पादित किया जाता है, तो औपचारिक मापदंडों के वर्तमान मान सहेजे जाते हैं (स्टैक पर) और स्टेटमेंट के दायरे में, वे कॉल में किए गए वास्तविक तर्कों के मूल्यों के लिए बाध्य होते हैं। जब बयान से बाहर निकल जाता है, तो उन औपचारिक तर्कों के मूल मूल्यों को बहाल कर दिया