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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值