bind2nd的问题

crs96321 2003-12-19 09:49:10
我在学习容器的时候遇到这样一句代码:
bind2nd(less<int>(),4)
不知道怎么理解?
bindnd函数怎么用?
less<int>是什么意思?

谢谢大侠!!!!
...全文
40 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaphoon 2003-12-20
这和adaptor有关
less有两个参数,用bind2nd后,就把第二个参数绑起来,以后就一直和那个参数比较
回复
pig1210127 2003-12-20
回复
huruiduan1983 2003-12-20
less<int>()是个function object属于<functional>类库,主要用于泛行算法
bind2nd是function adapter,就是通常说的适配器,用于绑定函数参数,
bind2nd(less<int>(),4)的意思是使less<int>()的第二个参数为4.
如果这么用的话:
int ia[10] = {1,1,2,3,5,8,13,21,43,12};
vector<int> vec(ia,ia+10);
vector<int>::const_iterator iter = vec.begin();
vector<int>::const_iterator end_it = vec.end();

while ((iter = find_if(iter,end_it,bind2nd(less<int>(),4))) != end_it)
{
cout<< *iter << ' ';
++iter;
}
就是把vec中小于4的打印出来,如果把bind2nd(less<int>(),4)改为bind1st(less<int>(),4)
就是把大于4的打印出来
回复
dft2000 2003-12-20
less<int>()是一个仿函数 stl的标准函数对象,用来比较大小,这里应该是小于的意思。int是这个函数对象处理的类型 ,他的返回值是一个bool 类型
回复
wildcat1984 2003-12-19
我也不是很懂.
这个函数的原型可以看看msdn
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告