मेरे पास एक std :: वेक्टर है और मैं प्रत्येक तत्व के विशिष्ट गुण को देखना चाहता हूं। कुछ संरचना में एक विशेषता 'प्रकार' है। मैं टाइप 1 या टाइप 2 होने के लिए इस विशेषता को देखना चाहता हूं।std :: find_if के साथ boost :: lambda के साथ कैसे उपयोग करें?
मेरी योजना boost :: lambda का उपयोग करना है।
std::vector<SomeStruct>::const_iterator it =
std::find_if(
vec.begin(), vec.end(),
_1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);
क्योंकि मैं प्रत्येक तत्व का एक विशिष्ट विशेषता का उपयोग करने की जरूरत है, मैं अगर मैं कर सकते हैं उपयोग को बढ़ावा देने :: बिल्कुल लैम्ब्डा यकीन नहीं है।
कोई संकेत?
यह सही है, लेकिन मैं यह नहीं समझ सकता कि यह क्यों काम करता है। यह भी वैसे ही काम करता है यदि आप बाध्य करते हैं (& SomeStruct :: func, _1) (जहां func एक फ़ंक्शन है) जो मुझे और भी भ्रमित करता है। – yhager
@yhager 'bind (& someStruct :: type, _1) 'आपको एक बढ़ावा लैम्ब्डा देता है जो ऑब्जेक्ट पर' .type' करने के परिणाम के लिए खड़ा होता है जो '_1' प्लेसहोल्डर है। अधिक जानकारी के लिए [बाइंड के लिए प्रलेखन देखें] (http://www.boost.org/doc/libs/1_50_0/doc/html/lambda/le_in_details.html#lambda.bind_expressions)। – sepp2k