#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的数。但是不对,请高手指教一下
写代码尽量不要去重复造轮子,不要自己定义实现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;
}