wskaźniki na funkcje vs funktory

0

Hej,

Czytam o funktorach i o ile potrafię docenić to że obiekt może być przekazany jako funktor do jakiejś funkcji np find_if. Taki funktor może mieć różne pola, można jakąś fabryką go budować w zależności od potrzeb (swoją drogą fabryka może też produkować wskaźniki na funkcję). Ale już kompletnie nie rozumiem jaka jest zaleta opakowania konkretnej f-ji w funktor (np std::ptr_fun). Co nam to daje że sobie f-je opakujemy w obiekt? Brakuje mi punktu zaczepienia? Jakaś rzecz, której nie da się zrobić bez opakowania. Przeszukując internet natknąłem się na kwestie składania funkcji, ale ciągle jest to dla mnie mglisty temat. Każdy przykład gdy opakowanie f-ji w obiekt albo jest niezbędne albo bardzo dużo upraszcza jest na wagę złota ;)

Pozdrawiam

0

Możesz jej użyć do polimorfizmu, wtedy nie musisz ifować jaką funkcję wybrać, gdy dochodzi do rozwidlenia wyboru.

0

f-ji

serio? 3 znaki?

Ogólnie niespecjalnie jest sens opakowywać wskaźnik na funkcję w obiekt, szczególnie gdy większość algorytmów oczekuje Callable. Czyli czegoś wywoływalnego, i tyle.

Jedyną (chyba) przewagą funktorów jako osobnych typów jest możliwość ustalenia podtypów (np. result_type), co jest używane np. w generatorach liczb pseudolosowych.

0

Druga rzecz to to, że funktor może przechowywać pewien stan między jednym uruchomieniem a drugim, w postaci pól.
I to jest chyba główna zaleta - oczywiście nie zawsze potrzebna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1