Cette question est une question de style, car vous pouvez toujours écrire une boucle for ou quelque chose de similaire; cependant, existe-t-il un STL ou un BOOST moins gênant pour l'écriture:Appelez la fonction membre sur chaque élément d'un conteneur
for (container<type>::iterator iter = cointainer.begin();
iter != cointainer.end();
iter++)
iter->func();
?
Quelque chose comme (imaginé) ceci:
call_for_each(container.begin(), container.end(), &Type::func);
Je pense que ce serait 1) moins de frappe, 2) plus facile à lire, 3) moins de changements si vous décidez de changer le type de base/type de conteneur.
EDIT: Merci pour votre aide, maintenant, et si je voulais passer certains arguments à la fonction membre?
+1 parce que vous me battez par 5 minutes avec cette réponse de liaison: p (oh, std :: mem_fun_ref est de la merde en utilisant des arguments liés!) –
+1, pour comprendre cela sans tout par vous-même et pour utiliser Boost. À votre santé! – dirkgently
ce que je veux dire est quand vous avez référence à des références lorsque vous avez la fonction membre a un paramètre de référence. boost :: bind résout si bien :) –