我有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));
爲什麼?
P.S.請不要使用lambda函數,也不要使用C++ 0x。
我完全同意。 – ltjax 2010-12-14 14:45:36
我同意,綁定語法是最容易閱讀的。如果表現是次要問題,請在這裏進行綁定。 – 2010-12-14 14:46:47
我同意,並且我會補充說,除非您已經分析並確定此聲明是性能瓶頸,否則性能應該是次要問題。 – 2010-12-14 15:03:27