函数对象

来源:互联网 发布:java读取zip文件内容 编辑:程序博客网 时间:2024/06/06 06:59
<pre name="code" class="cpp">#include <iostream>#include <string.h>#include <sys/types.h>using namespace std;class FunObj{    public:        void operator()()        {            cout<<"hello world\n";        }        void operator()(int n)        {            cout<<n<<endl;        }};int main(void){    FunObj fo;    fo();    fo(4444);    FunObj()();    return 0;}#include <map>#include <string>#include <iostream>using namespace std;struct MyGreater{    bool operator()(int left ,int right)    {        return left > right;    }};int main(void ){    map<int,string,MyGreater> mapTest;    mapTest.insert(map<int,string>::value_type(1,"aaaa"));    mapTest.insert(map<int,string>::value_type(3,"cccc"));    mapTest.insert(map<int,string>::value_type(2,"bbbb"));    for(map<int,string>::const_iterator ite = mapTest.begin();ite != mapTest.end();ite++)    {        cout<<ite->first<<"-->"<<ite->second<<endl;    }    return 0;}#include <vector>#include <iostream>#include <string>#include <algorithm>using namespace std;void PrintFun(int n){    cout<<n<<' ';}void Add3(int &n){    n += 3;}class PrintObj{    public:        void operator()(int n)        {            cout<<n<<" ";        }};class AddObj{    public:        AddObj(int number):number_(number)        {        }    public:        void operator()(int &n)        {            n+=number_;        }    private:        int number_;};class GreaterObj{    public:        GreaterObj(int number):number_(number)        {        }    public:        bool operator()(int n)        {            return n > number_;        }    private:        int number_;};int main(void){    int a[] = {1,2,3,4,5};    vector<int> v(a,a+5);    for_each(v.begin(),v.end(),PrintFun);    cout<<endl;    for_each(v.begin(),v.end(),Add3);    cout<<endl;    for_each(v.begin(),v.end(),PrintObj());    cout<<endl;    for_each(v.begin(),v.end(),AddObj(213131));    for_each(v.begin(),v.end(),PrintObj());    cout<<endl;    cout<<count_if(a,a+5,GreaterObj(3))<<endl;    return 0;}


                                             
1 0