Ho una lista di MyClass
:Che caso è meglio?
struct MyClass {
bool is_old_result(int lifetime);
};
std::list<MyClass> results;
int lifetime = 50; // or something else
Che caso di rimozione è meglio (C++ design e perfomance):
results.remove_if(
std::bind2nd(std::mem_fun_ref(&MyClass::is_old_result), lifetime));
o
results.remove_if(boost::bind(&MyClass::is_old_result, _1, lifetime));
o
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));
e perché?
P.S. Per favore, nessuna funzione lambda e nessun C++ 0x.
Sono completamente d'accordo. – ltjax
Concordo anch'io, la sintassi di bind è la più semplice da leggere. Se la prestazione è una preoccupazione secondaria, vai qui. –
Concordo anche e aggiungerò che le prestazioni dovrebbero essere una preoccupazione secondaria a meno che/non abbiate profilato e stabilito che questa affermazione è un collo di bottiglia per le prestazioni. –