Gibt es eine Möglichkeit, std :: transform mit einer Funktion mit mehreren Argumenten aufzurufen

7

Hallo Ich habe eine Funktion welche Signatur ist

std :: string f (Doppel x, Doppelparam1, Doppelparam2, Doppelparam3);

Ich möchte es auf einem std :: vector xvalues ​​für den Parameter x aufrufen, indem ich etwas wie std :: transform für einen bestimmten Wert von param1, param2 und param3 verwende.

Es wäre das Äquivalent von:

%Vor%

Wie kann das eleganter gemacht werden?

Mit freundlichen Grüßen Tony

    
BlueTrin 15.11.2010, 10:30
quelle

3 Antworten

16

Sie sollten sich boost :: bind ansehen, damit Sie Wie der Name schon sagt, um Argumente an Ihre Funktion f :

zu binden %Vor%

Das Ergebnis dieser Bindung ist eine unäre Funktion ( _1 ist ein Platzhalter für das Argument, mit dem es aufgerufen werden soll): Alle anderen Parameter haben feste Werte param1 , param2 , param3 .

    
icecrime 15.11.2010, 10:31
quelle
7

Und der Vollständigkeit halber, die C ++ 0x-Version, oder was ist der ganze Aufwand über Lambdas ?

%Vor%     
Matthieu M. 15.11.2010 11:54
quelle
3

Als icecrime vorgeschlagen boost::bind wird hier die beste Option sein. Wenn Sie boost jedoch aus irgendeinem Grund nicht verwenden können, können Sie dies immer mit einem benutzerdefinierten Funktor wie diesem tun:

%Vor%     
Naveen 15.11.2010 10:42
quelle

Tags und Links