【发布时间】:2010-12-14 14:39:53
【问题描述】:
我有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。
【问题讨论】:
标签: c++ performance stl language-design functor