仿函数

来源:互联网 发布:sm是什么意思网络用语 编辑:程序博客网 时间:2024/05/13 13:54
//仿函数的多状态#include"iostream"#include"algorithm"#include"list"using namespace std;struct print{void operator()(int a)   {cout<<"["<<a<<"]\n";}};/*struct add  {  int a;  add(int p):a(p){} //仿函数内的参数  void operator()(int &s)  {  s+=a;  }}; */class add //一个函数有多个状态(改变a的值){private:int a;public:add(int p):a(p){} //仿函数内的参数    void operator()(int &s)    {     s+=a;    }};int main(){int i;list<int>b;for(i=0;i<3;i++)b.push_back (i+1);for(auto p=b.begin();p!=b.end();p++)cout<<"["<<*p<<"]";cout<<endl;for_each(b.begin(),b.end(),add(10));//list中每个元素加10for(auto p=b.begin();p!=b.end();p++)cout<<"["<<*p<<"]";cout<<endl;for_each(b.begin(),b.end(),add(5));//list中每个元素加5for(auto p=b.begin();p!=b.end();p++)cout<<"["<<*p<<"]";cout<<endl;return 0;}

#include"iostream"#include"vector"#include"algorithm"using namespace std;struct print  //仿函数{void operator()(int a)   {cout<<"["<<a<<"]\n";}};int main(){vector<int>a;int i;for(i=0;i<3;i++)a.push_back(i+1);for_each(a.begin(),a.begin()+3,print()); //print()是print的临时对象return 0;}




0 0