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

C++14 में जेनेरिक लैम्ब्डा कैसे काम करता है?

पृष्ठभूमि: C++11 लैम्ब्डास

C++11 में, लैम्ब्डा एक्सप्रेशन्स पेश किए गए थे। लैम्ब्डा मूल रूप से एक फ़ंक्शन ऑब्जेक्ट है जिसे अन्य फ़ंक्शन कॉल स्टेटमेंट्स के अंदर नेस्टेड किया जा सकता है। auto कीवर्ड के साथ लैम्ब्डा एक्सप्रेशन्स को जोड़कर, उन्हें बाद में उपयोग किया जा सकता है।

C++14 सुधार: जेनेरिक लैम्ब्डास

C++14 में, ये लैम्ब्डा एक्सप्रेशन्स बेहतर हुए। यहां हम **जेनेरिक** या **पॉलीमॉर्फिक लैम्ब्डा** प्राप्त कर सकते हैं। उदाहरण के लिए, यदि हम एक लैम्ब्डा बनाना चाहते हैं जो इंटीजर्स जोड़ सके, फ्लोट्स जोड़ सके, और स्ट्रिंग्स भी कनकैट कर सके, तो हमें इस जेनेरिक लैम्ब्डा का उपयोग करना होगा।

सिंटैक्स

[](auto x, auto y) { return x + y; }

auto पैरामीटर टाइप्स लैम्ब्डा को किसी भी टाइप के आर्गुमेंट्स स्वीकार करने की अनुमति देते हैं जो + ऑपरेटर का समर्थन करते हैं।

उदाहरण

#include <iostream>
#include <string>
using namespace std;

int main() {
    // जेनेरिक लैम्ब्डा परिभाषित करें
    auto add = [](auto arg1, auto arg2) {
        return arg1 + arg2;
    };
    
    cout << "Sum of integers: " << add(5, 8) << endl;
    cout << "Sum of floats: " << add(2.75, 5.639) << endl;
    cout << "Concatenate Strings: " << add(string("Hello "), string("World")) << endl;
    
    // यह वेक्टर और अन्य टाइप्स के साथ भी काम करता है जिनमें operator+ है
    vector v1 = {1, 2}, v2 = {3, 4};
    // auto v3 = add(v1, v2);  // त्रुटि: vector में operator+ नहीं है
    
    return 0;
}

आउटपुट

Sum of integers: 13
Sum of floats: 8.389
Concatenate Strings: Hello World

यह कैसे काम करता है?

जेनेरिक लैम्ब्डा के लिए, कंपाइलर एक **टेम्पलेट फ़ंक्शन ऑपरेटर()** के साथ फंक्टर क्लास जनरेट करता है:

// वैचारिक रूप से जो कंपाइलर जनरेट करता है
struct GenericLambda {
    template <typename T, typename U>
    auto operator()(T x, U y) const -> decltype(x + y) {
        return x + y;
    }
};

उन्नत उपयोग

जेनेरिक लैम्ब्डा के साथ STL एल्गोरिदम

vector v = {1, 2, 3, 4, 5};

// किसी भी कंटेनर और टाइप के साथ काम करने वाला जेनेरिक प्रिंट
auto print = [](const auto& container) {
    for (const auto& elem : container) {
        cout << elem << ' ';
    }
    cout << '\n';
};

print(v);  // वेक्टर के साथ काम करता है
print(array{1, 2, 3});  // ऐरे के साथ काम करता है
print(list{1, 2, 3});   // लिस्ट के साथ काम करता है

ऑटो रिटर्न टाइप डिडक्शन (C++14)

// C++20: एक्सप्लिसिट टेम्पलेट पैरामीटर्स
auto func = []<typename T>(T x, T y) {
    return x + y;
};
  1. मेश मैसेजिंग क्या है और यह कैसे काम करता है? मेश मैसेजिंग क्या है और यह कैसे काम करता है?

    क्या आपने कभी सोचा है कि आप क्या करेंगे यदि अचानक आप दूसरों के साथ संवाद करने के लिए इंटरनेट से कनेक्ट नहीं हो सके, या अपने रोजमर्रा के काम पूरे नहीं कर सके? हम में से अधिकांश इसके कई उपयोगों के कारण इंटरनेट पर कई चीजों के लिए भरोसा करने लगे हैं। इस प्रकार, वेब और अन्य ऑनलाइन सेवाओं तक पहुंच में बा

  1. डेटा स्क्रैपिंग कैसे काम करती है? डेटा स्क्रैपिंग कैसे काम करती है?

    चूंकि आप इसे पढ़ रहे हैं, इस बात की अच्छी संभावना है कि आपने डेटा स्क्रैपिंग के लाभों के बारे में सुना होगा और इसकी स्वचालित तकनीक आपको बिना कोई मैन्युअल काम किए बहुत सारा डेटा इकट्ठा करने देती है। लेकिन डेटा स्क्रैपिंग वास्तव में कैसे काम करती है? और क्या यह कठिन है, या कोई भी डेटा स्क्रैप करना सी

  1. स्नैपचैट का अनावरण: कैसे ऐप मैसेजिंग को बदल देता है स्नैपचैट का अनावरण: कैसे ऐप मैसेजिंग को बदल देता है

    यह अतिशयोक्ति नहीं होगी अगर हम कहें कि स्नैपचैट ने मोबाइल मैसेजिंग ऐप्स की दुनिया में क्रांति ला दी है। स्नैपचैट की शुरुआत से पहले, किसी ने भी दोस्तों के साथ संवाद करने के लिए इस तरह के अनूठे तरीके का सपना भी नहीं देखा था। स्नैपचैट जो अवधारणा लाता है वह है सेल्फ-डिस्ट्रक्टिंग इमेज और वीडियो जो इसे न