&i
का मतलब है केवल i
संदर्भ के रूप में कब्जा कर लिया गया है, जबकि &
का अर्थ है लैम्बडा में उपयोग किए जाने वाले सभी चर, दायरे से कब्जा कर लिया जाता है।
int i = 0, j = 10;
[&i]{ i++; j++;}(); //error: j is not captured by reference
[&]{ i++; j++;}(); //ok: both variables are captured by reference
&i
दृष्टिकोण सीमा पर कब्जा कर लिया चर की राशि के लिए भाषा द्वारा प्रदान की जाती है। सी ++ आपको कैप्चर किए गए चर पर पूर्ण नियंत्रण प्रदान करता है, जिसके लिए कैप्चर करने के लिए विशिष्ट चर, कैप्चर करने के लिए (मूल्य या संदर्भ के अनुसार)।
i
और =
के साथ भी यही तर्क:
int i = 0, j = 10;
[i]{ i++; j++;}(); //error: j is not captured (only i is captured by value)
[=]{ i++; j++;}(); //ok: both variables are captured by value
//more
[&i, j]{ i++; j++;}(); //ok: captured i by reference, j by value
आशा है कि मदद करता है।
हाँ मेरा प्रश्न उनके अंतर के बारे में नहीं है, जिसे मैं पहले से ही जानता हूं। मैं जानना चाहता हूं कि पहला क्यों प्रदान किया जाता है यदि दूसरा व्यक्ति पहले से ही – texasbruce
कैप्चर करता है तो दायरे में सब कुछ कैप्चर नहीं किया जाता है। केवल चीजें जो लैम्ब्डा के अंदर उपयोग की जाती हैं। –
@ टिमोथी शील्ड्स: सही। संपादित। धन्यवाद। – Nawaz