#include<iostream>
using namespace std;
#include<algorithm>
#include<string>
#include<map>
#include<vector>
#include<ctime>
#include<functional>
int op(int v1,int v2)
{
if (v1>v2)
return v1;
else
return v2;
}
class TransForm
{
public:
bool operator()(int val,int val2)
{
return val>val2;
}
};
void print1(int val)
{
cout << val << " ";
}
void test1()
{
vector<int>v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
vector<int>v2;
v2.resize(v.size());
transform(v.begin(), v.end(), v2.begin(),TransForm());
for_each(v2.begin(), v2.end(), print1);
cout << endl;
}
int main()
{
test1();
system("pause");
return 0;
}
这是我的函数,为什么一运行就报error C2064: 项不会计算为接受 1 个参数的函数
transform
的第四个参数是以“输入容器的元素类型或可隐式转换为输入容器的元素类型”为唯一参数并以“输出容器的元素类型或可隐式转换为输出容器的元素类型”为返回值的函数对象,所以 Transform::operator()
应以 int
或可隐式转换为 int
的类型作为参数,并以 int
或可隐式转换为 int
的类型作为返回值,例如:int Transform::operator()(int)