-
C/C++ code
-
template < class InputIterator, class Function > Function for_each(InputIterator first, InputIterator last, Function f) { for ( ; first != last; ++ first ) f( * first); return f; }
上面是for_each的源码。
当
for_each(l.begin(),l.end(),print());的时候,print()是一个对象,没有名称的对象,
然后传递到f(*first)的时候,实际上就是print()(*first);
print()既然为一个对像,假定为a,也就是a(*first);而这就将调用operator().
/---------------------------------------for_each----------------------------------- #include <iostream> using namespace std; struct print list<int> l; print p = for_each(l.begin(), l.end(), print()); //--------------------------------find_if-------------------------------------------------------- #include <iostream> using namespace std; bool divby5(int x) list<int> l; list<int>::iterator iLocation; |