Muszę przekazać funkcję std :: do jakiegoś algorytmu. Rodzaj funkcji jestCzy mogę użyć std :: bind, aby "dołączyć" stan do funkcji?
typedef std::function<bool(const double&)> Condition;
W najprostszym przypadku, funkcja ta będzie wyglądać następująco
bool simpleCondition(const double& d){return d<0.001;}
Teraz chcę przekazać tę samą sytuację, ale tylko wtedy, gdy warunek jest spełniony szereg razy w wiersz, funkcja powinna zwracać wartość true. Próbowałem następujący
Mój kompilator nie narzeka i wydaje się działać zgodnie z oczekiwaniami. Jednak naprawdę nie rozumiem, dlaczego (z prostym wskaźnikiem funkcji to nie zadziała, prawda?). Chciałbym również wiedzieć, czy istnieje prostszy sposób na osiągnięcie tego samego.
Z lambda: 'static Condition getRepeatingCondition (Warunek c, int powtórzenia) {int counter = 0; return [=] (double const d) mutable {return if (c (d)) counter + = 1; else counter = 0; return counter> = powtórzenia; }} ' – dyp
Zauważ, że możesz uprościć powyższy kod, zmieniając nazwę' RepeatingCondition :: evalCondition' na 'operator()', upublicznij i użyj 'std :: bind (RepeatigCondition (c, reps), _1) w 'getRepeatingCondition'. – dyp
Czy jest to metoda statyczna z licznikiem statycznym poza pytaniem? To może uprościć nieco sytuację, umożliwiając całkowite opuszczenie obiektu. Uwaga: nie twierdzę, że jest to najlepsze rozwiązanie, ponieważ nie znam innych przypadków użycia. – AndyG