2011-08-28 14 views
5
int main() 
{ 
    std::vector<int> v; 
    v.push_back(1); 
    v.push_back(3); 
    v.push_back(2); 

    std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1 << "\n"); 
} 

में 1 इस कोड को बूस्ट का उपयोग किए बिना सी में अनुवाद किया जा सकता है ++? मुझे सी ++ 0x लैम्ब्डा अभिव्यक्ति वाक्यविन्यास पता है, लेकिन इस तरह के संदर्भ में प्लेसहोल्डर का उपयोग करने की कोशिश नहीं की।बूस्ट लैम्ब्डा :: _ C++ 0x

उत्तर

10

कोई प्लेसहोल्डर इस मामले में जरूरत है, lambdas पैरामीटर पर कब्जा के रूप में:

std::for_each(v.begin(), v.end(), [](int x){std::cout << x << "\n";}); 
+1

[] के बजाय उपयोग करने पर विचार [=], जब से तुम कुछ भी कब्जा नहीं कर रहे हैं। जब आप चर को कैप्चर करने का प्रयास करते हैं तो यह बाद में त्रुटियों को रोक देगा। –

+0

सच है। सही किया। –

संबंधित मुद्दे