//麻烦大家看看,这个报错怎么改
[Error] no matching function for call to 'GreaterFive::GreaterFive(int&)'
#include<iostream>
using namespace std;
const int L = 10;
#include<vector>
#include<algorithm>
class MyPrint
{
public:
void operator()(int value)
{
cout << value << " ";
}
};
class MyCompare
{
public:
bool operator()(int value1,int value2)
{
return value1 > value2;
}
};
class GreaterFive
{
public:
bool operator()(int value)
{
return value >5;
}
};
void greaterFive(vector<int>v)
{
int i=0;
int indexs[L];
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
int ret = GreaterFive(*it);
if (ret==1)
{
indexs[i] = std::distance(v.begin(), it);
i++;
}
}
cout << "结果如下" << endl;
for (int i = 0; i < sizeof(indexs) / 4; i++)
{
cout << indexs[i] << " ";
}
cout << endl;
}
int main()
{
vector<int>v;
for (int i = 0; i < 5; i++)
{
int x = rand() % 100 + 1;
v.push_back(x);
}
cout << "排序前" << endl;
for_each(v.begin(), v.end(), MyPrint()); cout << endl;
cout << "升序排序后" << endl;
sort(v.begin(), v.end());
for_each(v.begin(), v.end(), MyPrint()); cout << endl;
cout << "降序排序后" << endl;
sort(v.begin(), v.end(), MyCompare());
for_each(v.begin(), v.end(), MyPrint()); cout << endl;
greaterFive(v);
}