以find_if算法为例。
功能:找到数组中第一个大于40的元素。
code:
// find_if_bind2nd.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<functional> //用了greater<int>()
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
greater<int>g;
//bool greater40(int x)
//{
// return g(x,40);
//};
int _tmain(int argc, _TCHAR* argv[])
{
int intArr[]={30,90,10,40,70,50,20,80};
const int N = sizeof(intArr)/sizeof(int);
vector<int>a(intArr,intArr + N); //利用数组给vector赋予不同的初值
vector<int>::iterator p = find_if(a.begin(),a.end(),bind2nd(greater<int>(),40));
if(p == a.end())
{
cout<<"no element greater than 40 "<<endl;
}
else
{
cout<<"first element greater than 40 is: "<<*p<<endl;
}
int m;
cin>>m;
return 0;
}
运行:
分析:
bind2nd返回binder2nd函数对象,
它的函数运算体调用greater(x,40),即实现了将40绑定到greater的第二个参数中。
隐式使用了自己的适配器binder2nd。