函数对象,类里定义了操作符重载的函数,在算法里参数调用时需加括号()。
若直接定义一个全局函数,在算法里参数调用直接调用函数名即可。
#include<iostream>
#include<vector>
using namespace std;
class print
{
public:
bool operator ()(const int &i)
{
cout<<i<<" ";
}
};
/* void print(int &i)
{
cout<<i<<" ";
} */
int add(int &i)
{
return i+1;
}
int main()
{
vector<int> v(10);
for(int i=0;i<10;i++)
{
v[i]=rand()%20;
}
for_each(v.begin(),v.end(),print()); //不加括号 若是类里的函数则要
cout<<endl;
transform(v.begin(),v.end(),v.begin(),add);
for_each(v.begin(),v.end(),print());
cout<<endl;
}