Ich habe eine Liste von MyClass
:Welcher Fall ist besser?
struct MyClass {
bool is_old_result(int lifetime);
};
std::list<MyClass> results;
int lifetime = 50; // or something else
Was Fall besser ist das Entfernen (C++ Design und perfomance):
results.remove_if(
std::bind2nd(std::mem_fun_ref(&MyClass::is_old_result), lifetime));
oder
results.remove_if(boost::bind(&MyClass::is_old_result, _1, lifetime));
oder
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));
und warum?
P.S. Bitte, keine Lambda-Funktion und kein C++ 0x.
stimme ich vollständig zu. – ltjax
Ich stimme zu, die Bind-Syntax ist am einfachsten zu lesen. Wenn Leistung eine zweitrangige Angelegenheit ist, gehen Sie mit Bind hier. –
Ich stimme dem auch zu, und ich möchte hinzufügen, dass die Leistung nur zweitrangig sein sollte, es sei denn, Sie haben ein Profil erstellt und festgestellt, dass diese Aussage ein Leistungsengpass ist. –