Schleife durch for_each ersetzen
-
Kennt jemand eine Möglichkeit folgenden Code durch eine Konstruktion mit std::for_each zu ersetzen?
std::list<Input *> InputList; for(InputListIt It = InputList.begin();It != InputList.end();++It) { (*It)->OnKeyDown(); }
-
Ja klar. Schreib dir einen Funktor.
class OnKeyDownCaller { public: void operator()(Input* pInput) { pInput->OnKeyDown(); } }; for_each(InputList.begin(), InputList.end(), OnKeyDownCaller);
-
Das ist mir bekannt, das Problem ist, dass ich nicht für jede Member-Funktion einen Funktor schreiben möchte.
Möglicherweise ist es möglich ein Template zu schreiben, derart:
for_each(InputList.begin(), InputList.end(), call_mem<Input::OnkeyDown>);
-
sollte doch so gehen :
for_each( InputList.begin(), InputList.end(), mem_fun(&Input::OnkeyDown) );
-
Autsch, stimmt, hatte nen Knopf in der Logik...
Danke!