Which of these 2 methods is better and why?
Method 1:
void fun(int i) { //do stuff } ... for_each(a.begin(), a.end(), fun);
Method 2
My opinion - #1 is better, because it's simpler.
Just because something can be an object, doesn't mean it should be one. I'm sure there are cases where the functor makes sense, but in most cases there's probably no need for it.