C++ में लैम्ब्डा एक्सप्रेशन क्या है और इसका उपयोग कब करना चाहिए?
सभी को नमस्ते! मैं C++ सीख रहा हूँ और अक्सर कोड में सहकर्मियों के कुछ इस तरह देखता हूँ:
```cpp
std::vector numbers = {5, 2, 8, 1, 9};
std::sort(numbers.begin(), numbers.end(), [](int a, int b) { return a < b; });
```
या फिर इस तरह:
```cpp
std::for_each(numbers.begin(), numbers.end(), [](int& x) { x *= 2; });
```
मैं समझता हूँ कि ये कुछ अनाम फंक्शन्स हैं, लेकिन पूरी तरह से समझ नहीं आता। डॉक्यूमेंटेशन में "लैम्ब्डा-एक्सप्रेशन" लिखा है, लेकिन समझाना कुछ जटिल है। मेरे कुछ प्रश्न हैं:
1. सरल शब्दों में लैम्ब्डा एक्सप्रेशन क्या है? यह सामान्य फंक्शन से कैसे अलग है?
2. शुरुआत में वर्गाकार ब्रैकेट `[]` की क्या ज़रूरत है? उसमें क्या लिखा जा सकता है?
3. लैम्ब्डा का उपयोग कब करना बेहतर है, और कब सामान्य फंक्शन या फंक्टर का?
4. वेरिएबल्स को कैसे सही तरीके से कैप्चर करें? मैंने `[=]`, `[&]`, `[this]` देखा है—इसका क्या मतलब है?
खासकर कैप्चर का सिंटैक्स मुझे डराता है। मैंने बाहरी वेरिएबल का उपयोग करके सॉर्टिंग के लिए अपना callback लिखने की कोशिश की, लेकिन कुछ काम नहीं आया। कृपया समझाएँ।