函数对象

<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;
}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值