thrust::placeholders

Wieder etwas neues gelernt.

In Thrust kann man anstelle von Funktoren zu benutzen, auch Placeholder einsetzen.

 thrust::transform(X.begin(), X.end(),  // input range #1
                      Y.begin(),           // input range #2
                      Y.begin(),           // output range
                      a * _1 + _2);        // placeholder expression

So sieht das dann aus. _1 bezeichnet das erste Element, _2 das zweite Element, was vor kommt. Geht theoretisch bis _10. 

Das ganze beruht auf einer Idee von Boost, wo diese Platzhalter zum ersten Mal eingeführt wurden. In dem Zusammenhang: lambda-Funktionen: http://www.boost.org/doc/libs/1_51_0/doc/html/lambda/s03.html