分类: C/C++
2013-09-05 10:48:20
今天在c++ primary 中看到谓词的用法
个人理解就是函数规则的重新定义,下面的例子演示:
#include "stdio.h"
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
bool isFunc(const string s1,const string s2) { return s1.length()<s2.length(); } void func_predicate() { vector<string> vec; vec.push_back("d"); vec.push_back("adc"); vec.push_back("aa"); sort(vec.begin(),vec.end()); int i=0; for(i = 0;i) { cout< endl; } sort(vec.begin(),vec.end(),isFunc); for(i = 0;i ) { cout< endl; } } int main() { func_predicate(); return 1; }
对于谓词的形参没有特别明确的说法,但是要与对应容器的类型相同,关于是否使用引用形式,好像对结果没有影响;谓词的返回值为bool类型,以返回值的结果作为函数的操作条件。
上面例子输出结果如下:
aa
adc
d
d
aa
adc
没有使用谓词:正常排序,字符窜比对;使用谓词函数按照字符串长度进行排序。
//---------------------------函数对象及谓词的事例-------------------