64,662
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>#include <iostream>
#include <vector>
#include <functional>
#include <cmath>
#include <algorithm>
using namespace std;
template <class OP1, class OP2>
class compose_f_gx : public unary_function <typename OP2::argument_type, typename OP1::result_type>
{
private:
OP1 op1;
OP2 op2;
public:
compose_f_gx(const OP1& o1, const OP2& o2) : op1(o1), op2(o2)
{}
typename OP1::result_type operator()(const typename OP2::argument_type& x) const
{
return op1(op2(x));
}
};
template <typename OP1, typename OP2>
inline compose_f_gx <OP1, OP2> compose_f_gx2(const OP1& o1, const OP2& o2)
{
return compose_f_gx<OP1, OP2>(o1, o2);
}//在此提示了:error C2904: “compose_f_gx”: 名称已经用于当前范围内的模板
int main()
{
vector <int> coll;
for (int i = 0;i < 9;i++)
coll.push_back(i + 1);
copy(coll.begin(), coll.end(), ostream_iterator <int>(cout, " "));
cout << endl << endl;
transform(coll.begin(), coll.end(), ostream_iterator <int>(cout, " "), compose_f_gx2(bind2nd(multiplies <int>(), 5), bind2nd(plus <int>(), 10)));
cout << endl;
}