1. 程式人生 > >bind2nd 產生binder2nd函式介面卡例項

bind2nd 產生binder2nd函式介面卡例項

以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。