#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
template <class T>
class CSum
{
T n;
static T sum;
public:
T getsum()
{
return sum;
}
public:
CSum(T num = 0):n(num){}
void operator()(CSum v)
{
sum+=v.n;
}
void fun()
{
sum+=n;
}
};
template <class T>
T CSum<T>::sum = 0;
int main()
{
vector<CSum<int> > v;
for(int i =1;i<=100;++i)
v.push_back(CSum<int>(i));
//成员函数
for_each(v.begin(),v.end(),mem_fun_ref(CSum<int>::fun));
CSum<int> result;
cout<<result.getsum()<<endl;
//函数对象
CSum<int> sObj=for_each(v.begin(),v.end(),CSum<int>());
cout<<sObj.getsum();
return 0;
}
备份地址: 【STL中调用函数对象和普通函数差异】