To pytanie jest kwestią stylu, ponieważ zawsze możesz napisać pętlę for lub coś podobnego; jednak czy mniej nieprzyjemny STL lub BOOST jest równoważny z pisaniem:Funkcja członka wywołania dla każdego elementu w pojemniku
for (container<type>::iterator iter = cointainer.begin();
iter != cointainer.end();
iter++)
iter->func();
?
Coś (wyobrazić) to:
call_for_each(container.begin(), container.end(), &Type::func);
myślę byłoby 1) mniej pisania, 2) łatwiej czytać, 3) pomniejszone o zmiany, jeśli zdecydowałeś się zmienić typ bazowy/typ kontenera.
EDIT: Dziękuję za pomoc, a teraz, co jeśli chciałbym przekazać kilka argumentów do funkcji członka?
+1, ponieważ pokonałeś mnie 5 minut za pomocą tej odpowiedzi bind: p (oh, std :: mem_fun_ref to bzdura podczas używania ze związanymi argumentami!) –
+1, za to, że nie wyobrażamy sobie tego samodzielnie i za pomocą Boost. Twoje zdrowie! – dirkgently
co mam na myśli, gdy masz odniesienia do odniesienia, gdy masz funkcję członka ma parametr odniesienia. boost :: bind rozwiązuje to tak ładnie :) –