【C++】 --- 函数对象

1. 函数对象的概念

如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名仿函数。

函数对象(仿函数)是一个类,不是一个函数

2. 谓词概念

返回bool类型的仿函数称为谓词
       如果operator()接受一个参数,那么叫做一元谓词
       如果operator()接受两个参数,那么叫做二元谓词
 

#include 
#include 

//二元谓词
class MyCompare
{ 
public:
    bool operator()(int num1, int num2)
    {
        return num1 > num2;
    }
};

void test01()
{
    vector v;
    v.push_back(10);
    v.push_back(40);
    v.push_back(20);
    v.push_back(30);
    v.push_back(50);
    //默认从小到大
    sort(v.begin(), v.end());
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
    cout << *it << " ";
    } 
    cout << endl;
    cout << "----------------------------" << endl;
    //使用函数对象改变算法策略,排序从大到小
    sort(v.begin(), v.end(), MyCompare());
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    } 
    cout << endl;
}

int main(void)
{
    test01();

    return 0;
}

 

 

你可能感兴趣的:(C++)