謂詞函數是一個返回布林值的函數。
一元謂詞函數就是只釆用一個實參的函數。使用一元謂詞函數可以確定一個給定物件是否具有某些特徵。
例如,可以使用以下類建立函數物件,該函數物件就是一元謂詞函數,它可以判斷一個整數是奇數還是偶數:
class IsEven
{
public:
bool operator()(int x)
{
return x % 2 == 0;
}
}
以下程式碼顯示了如何使用通過該類建立的一個謂詞函數物件:
int number;
cout << " Enter an integer:";
cin << number;
if (IsEven()(number))
{
cout << " Even ";
}
else
{
cout << " Odd ";
}
二元謂詞函數就是釆用兩個形參的謂詞函數。使用二元謂詞函數可以確定兩個物件是否以某種方式相關聯。
例如,可以使用以下類建立一個謂詞函數,以確定一個整數是否比另外一個整數小:
class LessThan
{
public:
bool operator()(int a, int b)
{
return a < b;
}
}
表示式 LessThan() 是一個函數物件,而 LessThan()(x,y) 則代表了使用實參 x 和 y 呼叫函數物件的結果。