STL函数对象——谓词
程序员文章站
2022-07-12 14:37:26
...
STL函数对象——谓词
概念:
谓词是指普通函数或重载的operator()返回值是bool类型的函数对象。如果operator接受一个参数,称为一元谓词,如果接受两个参数,称为二元谓词。谓词可作为一个判断式。
回调函数是指只有当某个函数(更确切的说是函数的指针)被作为参数, 被另一个函数调用时, 它才是回调函数。
示例:
//一元谓词
class GreaterThenFive
{
public:
bool operator()(int num)
{
return num > 5;
}
};
void test1()
{
vector<int> v;
for (int i=0;i<10;i++)
{
v.push_back(i);
}
vector<int>::iterator it = find_if(v.begin(),v.end(),GreaterThenFive());
if (it == v.end())
{
cout << "不存在" << endl;
}
else
{
cout << *it << endl;
}
}
//二元谓词
class MyCompare
{
public:
bool operator()(int num1, int num2)
{
return num1>num2;
}
};
void test2()
{
vector<int> v;
v.push_back(10);
v.push_back(40);
v.push_back(30);
v.push_back(50);
v.push_back(90);
//排序:默认从小到大
sort(v.begin(),v.end());
for (vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout << *it << "\t";
}
cout << endl << "*****************" << endl;
//使用函数对象改变算法策略,排序从大到小
sort(v.begin(),v.end(),MyCompare());
for (vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout << *it << "\t";
}
cout << endl;
}
下一篇: stl中map的key可以重复吗?