neu schreiben habe ich einen Code ein:Wie kann ich richtig C++ 11 Lambda-Ausdruck ohne Lambda ausdr
class Variant
{
public:
void init();
}
void Variant::init()
{
int var 1;
vector list;
vector list2;
tbb::parallel_for(tbb::blocked_range<std::size_t>(0, list.size(), ClrSize),
[this, &var1, &list,&list2](const tbb::blocked_range<std::size_t> &range)
{
/*some code here*/
}
ich dachte operator()(const tbb::blocked_range<std::size_t> &range)
Umsetzung
class Variant
{
public:
void operator()(const tbb::blocked_range<std::size_t> &range)
{
/*some code here*/
}
void init();
}
void Variant::init()
{
int var 1;
vector list;
vector list2;
tbb::parallel_for(tbb::blocked_range<std::size_t>(0, list.size(), ClrSize), this);
}
aber es löst nicht Aufnahme Listenproblem.
Wie kann ich Lambda-Ausdruck neu schreiben? Was kann ich mit var1, list, list2 Argumente tun?
Dank
Meinst du ich sollte Code wie diesen verwenden? * tbb :: parallel_for (tbb :: blocked_range (0, list.size(), ClrSize), MyFunctor (x, y, z, foo)) * –
Deachy
@ Deachy: Nun, in Ihrem Fall denke ich, dass die Argumente bestanden zu 'MyFunctor' wäre' * this, var1, list, list2', aber ja, das ist die Idee; C++ 11 Lambdas sind nur syntaktische Zucker für anonyme Definitionen von Funktoren, die Variablen binden (Argumente an den Konstruktor, die Mitglieder der Funktorinstanz werden) und stellen eine 'operator()' -Methode bereit, die diese erfassten Variablen verwenden kann. – ShadowRanger