C++ में लैम्ब्डा एक्सप्रेशन क्या है और इसका उपयोग कब करना चाहिए?
नमस्ते साथियों! मैंने C++11 सीखना शुरू किया है और लगातार "लैम्ब्डा एक्सप्रेशन" (lambda expression) शब्द पर ठोकर खा रहा हूँ। मैंने डॉक्यूमेंटेशन पढ़ा, लेकिन मुझे पूरी तरह से समझ नहीं आया कि यह क्या है और, सबसे महत्वपूर्ण, इसकी आवश्यकता क्यों है।
यहाँ एक उदाहरण है जो मुझे एक ट्यूटोरियल में मिला:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int multiplier = 3;
// यहाँ क्या हो रहा है?
std::for_each(numbers.begin(), numbers.end(), [multiplier](int n) {
std::cout << n * multiplier << " ";
});
return 0;
}
मैं समझता हूँ कि `std::for_each` प्रत्येक एलिमेंट पर एक फंक्शन लागू करता है, लेकिन मुझे `[multiplier](int n) { ... }` कंस्ट्रक्शन समझ नहीं आ रहा है। कोई सामान्य फंक्शन या फंक्टर क्यों नहीं लिख सकते? लैम्ब्डा का क्या लाभ है?
साथ ही, मुझे समझ नहीं आता कि वर्गाकार ब्रैकेट `[]` का क्या अर्थ है। कुछ उदाहरणों में वे खाली होते हैं, कुछ में उनके अंदर वेरिएबल होते हैं। और मुझे यह भी नहीं पता कि कब इसका उपयोग करना चाहिए।