boost::bind - wyjaśnienie działania

boost::bind - wyjaśnienie działania
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 
<pre>class image;

class animation
{
public:

    void advance(int ms);
    bool inactive() const;
    void render(image & target) const;
};

std::vector<animation> anims;

template<class C, class P> void erase_if(C & c, P pred)
{
    c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());
}

void update(int ms)
{
    std::for_each(anims.begin(), anims.end(), boost::bind(&animation::advance, _1, ms));
    erase_if(anims, boost::mem_fn(&animation::inactive));
}

void render(image & target)
{
    std::for_each(anims.begin(), anims.end(), boost::bind(&animation::render, _1, boost::ref(target)));
}</pre>

Pytanie :
Co zostanie podstawione za _1 w funkcji bind ? Mógłby ktoś wyjaśnić ?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Placeholder dla argumentu podanego później. Dzięki temu pierwszy argument podany do utworzonego funktora będzie przekazany do funkcji.

Tutaj zdaje się to ładnie objaśnione: http://stackoverflow.com/questions/18680607/role-of-placeholder-in-boostbind-in-the-following-example

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Co zostanie podstawione za _1 w funkcji bind ? Mógłby ktoś wyjaśnić ?

Kolejny element z kolekcji, wypluty przez for_each.

PS. Nie stawiamy spacji przed znakiem zapytania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.