मैं MyClass
की एक सूची है:क्या मामला बेहतर है?
struct MyClass {
bool is_old_result(int lifetime);
};
std::list<MyClass> results;
int lifetime = 50; // or something else
को दूर करने के क्या मामला है बेहतर (C++ डिजाइन और कार्यक्षमता):
results.remove_if(
std::bind2nd(std::mem_fun_ref(&MyClass::is_old_result), lifetime));
या
results.remove_if(boost::bind(&MyClass::is_old_result, _1, lifetime));
या
struct RemoveFunctor {
RemoveFunctor (int lifetime) : lifetime(lifetime) {}
bool operator()(const MyClass & m) { return m.is_old_result(lifetime); }
private:
int lifetime;
};
results.remove_if(RemoveFunctor(lifetime));
और क्यों?
पीएस कृपया, कोई लैम्ब्डा-फ़ंक्शन नहीं और कोई सी ++ 0x नहीं है।
मैं पूरी तरह से सहमत हूं। – ltjax
मैं भी सहमत हूं, बाइंड सिंटैक्स पढ़ने के लिए सबसे आसान है। यदि प्रदर्शन एक माध्यमिक चिंता है तो यहां बांधें। –
मैं भी सहमत हूं, और मैं जोड़ूंगा कि प्रदर्शन तब तक एक माध्यमिक चिंता होनी चाहिए जब तक आप प्रोफाइल नहीं करते और निर्धारित करते हैं कि यह कथन एक प्रदर्शन बाधा है। –