c++中如何组合多个predicate

   2024-09-30 8480
核心提示:在C++中,你可以使用标准库中的std::function和std::bind来组合多个谓词(predicate)#includeiostream#includevector#includeal

在C++中,你可以使用标准库中的std::function和std::bind来组合多个谓词(predicate)

#include<iostream>#include<vector>#include<algorithm>#include<functional>bool is_even(int n) {    return n % 2 == 0;}bool is_positive(int n) {    return n > 0;}int main() {    std::vector<int> numbers = {-2, -1, 0, 1, 2, 3, 4, 5, 6};    // 创建一个组合谓词,要求数字既是正数又是偶数    std::function<bool(int)> combined_predicate = [](int n) {        return is_even(n) && is_positive(n);    };    // 使用组合谓词过滤向量    std::vector<int> filtered_numbers;    std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(filtered_numbers), combined_predicate);    // 输出过滤后的结果    for (int number : filtered_numbers) {        std::cout<< number << " ";    }    return 0;}

在这个示例中,我们定义了两个简单的谓词:is_even和is_positive。然后,我们创建了一个新的谓词combined_predicate,它将这两个谓词组合在一起,要求数字既是正数又是偶数。最后,我们使用std::copy_if和combined_predicate过滤向量,并输出过滤后的结果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号