首页 新闻 赞助 找找看

关于函数对象

0
悬赏园豆:10 [已解决问题] 解决于 2011-10-11 15:34

#include <iostream>
#include <algorithm>
using namespace std;

template <class Type>
struct equal_to
{
   equal_to(Type a,Type b):N(a),comp(b){}
   bool operator()(Type &a,Type &b)
   {

      if(a==b)
      return true;
      else
      return false;
   }
   Type N;
   Type comp;
};


int main()
{
  int A[]={4,1,0,3,2,0,6};
  const int N=sizeof(A)/sizeof(int);
  int* p=find_if(A,A+N,bind2nd(equal_to<int>(),0));
  cout<<p-A<<endl;
  }

我想在find_if函数中实现这样的一个功能:在数组A中找到第一个等于0的数。但是不对,请高手指教一下

lzjnhs的主页 lzjnhs | 初学一级 | 园豆:60
提问于:2011-03-21 16:25
< >
分享
最佳答案
0

写代码尽量不要去重复造轮子,不要自己定义实现equal_to,在STL中已有equal_to了,按你上面的代码可以修改成如下:

#include <iostream>
#include
<functional>
#include
<algorithm>

using namespace std;

int main()
{
int A[]={4,1,0,3,2,0,6};
const int N=sizeof(A)/sizeof(int);
int* p=find_if(A,A+N, bind2nd(equal_to<int>(), 0));

cout
<< *p << endl;

return 0;
}
收获园豆:10
laocai_liu | 菜鸟二级 |园豆:230 | 2011-03-28 22:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册