Je me demande comment implémenter ce qui est indiqué dans le titre. J'ai essayé quelque chose comme ...std :: for_each sur une fonction membre avec 1 argument
std::for_each(a.begin(), a.end(), std::mem_fun_ref(&myClass::someFunc))
mais je reçois une erreur disant que le « terme » (I "m en supposant que cela signifie le 3ème argument) n'évalue pas à une fonction avec 1 argument , même si someFunc
prend un argument - le type des objets stockés dans a
Je me demande si ce que j'essaie de faire est possible en utilisant la bibliothèque standard (je sais que je peux le faire facilement en utilisant boost PS utilise for_each
et mem_fun_ref
ont des implications de performance par rapport à simplement itérer par a
manuellement et en passant l'objet à someFunc
?
Je suppose que j'utiliserais alors bind2nd. Maintenant, je pense à comment spécifier comment utiliser l'élément courant dans l'itération pour cela. Je pense que je vais utiliser boost .. – Person
Non, utilise toujours bind1st. mem_fun_ref devient une fonction avec deux arguments. Le premier est MyClass, le second est votre fonction membre param. Vous voulez lier le premier argument à mem_fun_ref à votre instance de classe. – Stephen
@Person: Si vous utilisez Boost, je vous recommande d'utiliser leur macro foreach. 'std :: for_each' était simplement une idée échouée, et conduit souvent à plus de diffusion, plus difficile à lire le code. – GManNickG