// 函数指针适配
// 使用 ptr_fun<>() 适配函数指针
// <> 中的第一个参数是函数指针的类型，第二个参数是函数指针的参数类型，第三个参数是函数指针的返回值类型
// bind1st() 和 bind2nd() 适配函数对象
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool gtn(int n1, int n2)
{
    return n1 > n2;
}

int main()
{
    int m[] = {1, 2, 2, 3, 5, 10};
    vector<int> v;
    v.assign(m, m + sizeof(m) / sizeof(m[0]));

    vector<int>::iterator ret = find_if(v.begin(), v.end(), bind2nd(ptr_fun<int, int, bool>(gtn), 3));
    cout << *ret << endl;

    return 0;
}
