在C++中,predicate
函數通常用于排序、查找和過濾等操作
predicate
函數接受一個或多個參數,并返回一個布爾值。這種函數可以與STL(Standard Template Library)算法一起使用,例如std::sort
、std::find_if
和std::remove_if
等。
以下是一個簡單的示例,展示了如何使用predicate
函數對整數向量進行排序:
#include<iostream>
#include<vector>
#include<algorithm>
bool is_even(int n) {
return n % 2 == 0;
}
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 使用 predicate 函數對向量進行排序
std::sort(numbers.begin(), numbers.end(), [](int a, int b) {
if (is_even(a) && !is_even(b)) {
return true;
} else if (!is_even(a) && is_even(b)) {
return false;
} else {
return a < b;
}
});
for (int num : numbers) {
std::cout<< num << " ";
}
return 0;
}
在這個示例中,我們定義了一個名為is_even
的predicate
函數,用于檢查一個整數是否為偶數。然后,我們使用std::sort
算法對整數向量進行排序,其中傳遞了一個lambda表達式作為predicate
函數。這個lambda表達式首先根據元素是否為偶數對它們進行排序,然后根據它們的大小進行排序。