bind2nd的问题

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

谢谢大侠!!!!
...全文
84 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧