std::vector & for_each
-
So?
for_each(v.begin(), v.end(), resize(20))
-
ich meine, du hast sozusagen etwas gebaut, was mir ermöglicht, den Code so wie im ersten Beitrag aufzurufen.
Ich hatte aber an so etwas wie
for_each(v.begin(), v.end(), ???)gedacht, dass das Beschriebene leistet.
-
Du meinst, ohne den Funktor?
for_each(v.begin(), v.end(), bind2nd( mem_fun_ref<void, vector<int> >( &vector<int>::resize ), 20 ) );Mit boost geht das vermutlich schöner.
-
Ungetestet:
for_each(v.begin(), v.end(), bind2nd(mem_fun_ref(&vector<...>::resize), 20));EDIT4MFK

Mit boost:for_each(v.begin(), v.end(), bind(&vector<...>::resize, _1, 20));
-
Genau so habe ich mir das gedacht. Nur habe ich nicht den Parameter void bei mem_fun_ref angegeben. Was hat der zu bedeuten?
Folgendes geht wieder schief:
vector<vector<bool>> v(10,10); for_each(v.begin(), v.end(), bind2nd( mem_fun_ref<void, vector<bool> >( &vector<bool>::resize ), 20 ) );
-
-
Turing schrieb:
Genau so habe ich mir das gedacht. Nur habe ich nicht den Parameter void bei mem_fun_ref angegeben. Was hat der zu bedeuten?
Die template-Parameter bei mem_fun_ref (siehe mein Beispiel) brauchen eigentlich auch garnicht angegeben zu werden, da sie bei Template-Funktionen hergeleitet werden können.
Folgendes geht wieder schief:
vector<bool> ist ein Spezialfall, leider weiss ich gerade auch keinen Workaround.
-
vector<bool> ist ein Spezialfall, leider weiss ich gerade auch keinen Workaround.
...dann weiß ich ja jetzt, warum meine ursprüngliche Version nicht funktioniert
hat.Habe den Typ von bool auf int abgeändert, intern wird es vermutlich sowieso mindestens als int abgelegt, und folgende Version verwendet:
for_each(v.begin(), v.end(), bind2nd(mem_fun_ref(&vector<int>::resize), 20));Vielen Dank.

-
LordJaxom schrieb:
Die template-Parameter bei mem_fun_ref (siehe mein Beispiel) brauchen eigentlich auch garnicht angegeben zu werden, da sie bei Template-Funktionen hergeleitet werden können.
Genau dafür ist die Funktion da, damit man diesen Hickhack mit mem_fun_ref**_t** nicht hat

-
eine vor-schleife ist viel leichterer zu ferstehen