64,637
社区成员
发帖
与我相关
我的任务
分享
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
struct int_c
{
int i;
char c;
friend ostream & operator<<(ostream & output, int_c ic)
{
return output << ic.i << ", " << ic.c << endl;
}
};
struct func
{
bool operator()(struct int_c a, int b)
{
return (a.i == b);
}
};
bool wwww(struct int_c a, int b)
{
return (a.i == b);
}
int main(int argc, char *argv[])
{
vector<int_c> vecIC;
int_c int_c_node;
for(char c = 'a'; c <= 'z'; c++)
{
int_c_node.i = int(c - 'a');
int_c_node.c = c;
vecIC.push_back(int_c_node);
}
copy(vecIC.begin(), vecIC.end(), ostream_iterator<int_c>(cout));
vector<int_c>::iterator iter;
//iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(func(), 5));
iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(ptr_fun(wwww), 5));
cout << iter->i << ", " << iter->c << endl;
return 0;
}
template <class Operation, class T>
binder2nd<Operation> bind2nd (const Operation& op, const T& x)
struct func:public binary_function<int_c,int,bool>
{
bool operator()(struct int_c a, int b) const
{
return (a.i == b);
}
};
// TEMPLATE STRUCT binary_function
template<class _Arg1,
class _Arg2,
class _Result>
struct binary_function
{ // base class for binary functions
typedef _Arg1 first_argument_type;
typedef _Arg2 second_argument_type;
typedef _Result result_type;
};
struct func:public std::binary_function<int_c,int,bool>
{
bool operator()(struct int_c a, int b)
{
return (a.i == b);
}
};
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
struct int_c
{
int i;
char c;
friend ostream & operator<<(ostream & output, int_c ic)
{
return output << ic.i << ", " << ic.c << endl;
}
};
struct func
{
bool operator()(struct int_c a, int b)
{
return (a.i == b);
}
};
bool wwww(struct int_c a, int b)
{
return (a.i == b);
}
int main(int argc, char *argv[])
{
vector<int_c> vecIC;
int_c int_c_node;
vector<int_c>::iterator iter;
for(char c = 'a'; c <= 'z'; c++)
{
int_c_node.i = int(c - 'a');
int_c_node.c = c;
vecIC.push_back(int_c_node);
}
copy(vecIC.begin(), vecIC.end(), ostream_iterator<int_c>(cout));
//iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(func(), 5)); 这一行为什么会编译不过?
iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(ptr_fun(wwww), 5));
cout << *iter << endl;
return 0;
}
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
struct int_c
{
int i;
char c;
friend ostream & operator<<(ostream & output, int_c ic)
{
return output << ic.i << ", " << ic.c << endl;
}
};
struct func
{
bool operator()(struct int_c a, int b)
{
return (a.i == b);
}
};
bool wwww(struct int_c a, int b)
{
return (a.i == b);
}
int main(int argc, char *argv[])
{
vector<int_c> vecIC;
int_c int_c_node;
for(char c = 'a'; c <= 'z'; c++)
{
int_c_node.i = int(c - 'a');
int_c_node.c = c;
vecIC.push_back(int_c_node);
}
copy(vecIC.begin(), vecIC.end(), ostream_iterator<int_c>(cout));
vector<int_c>::iterator iter;
//iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(func(), 5)); //这一行调用编译不过问题在吗
iter = find_if(vecIC.begin(), vecIC.end(), bind2nd(ptr_fun(wwww), 5));
cout << iter->i << ", " << iter->c << endl;
return 0;
}