Mam listę MyClass
:Który przypadek jest lepszy?
struct MyClass {
bool is_old_result(int lifetime);
};
std::list<MyClass> results;
int lifetime = 50; // or something else
Co przypadek usuwania jest lepszy (C++ projektu i osiągów):
results.remove_if(
std::bind2nd(std::mem_fun_ref(&MyClass::is_old_result), lifetime));
lub
results.remove_if(boost::bind(&MyClass::is_old_result, _1, lifetime));
lub
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));
i dlaczego?
P.S. Proszę, nie ma funkcji lambda ani C++ 0x.
Zgadzam się całkowicie. – ltjax
Zgadzam się również, składnia wiązania jest najłatwiejsza do odczytania. Jeśli wydajność jest kwestią drugorzędną, przejdź do binda tutaj. –
Zgadzam się również, a dodam, że wydajność powinna stanowić problem wtórny, chyba że/dopóki profilowanie i stwierdzenie, że to stwierdzenie nie jest wąskim gardłem wydajności. –