亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++ filt如何處理多種過濾條件

c++
小樊
81
2024-11-16 14:23:43
欄目: 編程語言

在C++中,我們可以使用函數對象(也稱為仿函數)和lambda表達式來處理多種過濾條件。這里有一個示例,展示了如何使用這些技術來過濾一個整數向量,根據多個條件(例如,大于10且為偶數)。

#include <iostream>
#include <vector>
#include <algorithm>

bool is_even(int num) {
    return num % 2 == 0;
}

bool is_greater_than_ten(int num) {
    return num > 10;
}

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};

    // 使用函數對象進行過濾
    std::vector<int> filtered_numbers1;
    std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(filtered_numbers1), is_even);
    std::copy_if(filtered_numbers1.begin(), filtered_numbers1.end(), std::back_inserter(filtered_numbers1), is_greater_than_ten);

    // 使用lambda表達式進行過濾
    std::vector<int> filtered_numbers2;
    std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(filtered_numbers2), [](int num) {
        return num % 2 == 0 && num > 10;
    });

    // 輸出過濾后的結果
    std::cout << "Filtered numbers using function objects:" << std::endl;
    for (int num : filtered_numbers1) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Filtered numbers using lambda expressions:" << std::endl;
    for (int num : filtered_numbers2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在這個示例中,我們首先定義了兩個簡單的函數對象is_evenis_greater_than_ten,分別用于檢查一個整數是否為偶數以及是否大于10。然后,我們使用std::copy_if算法和這些函數對象來創建一個過濾后的向量filtered_numbers1

接下來,我們展示了如何使用lambda表達式來實現相同的過濾條件。Lambda表達式是一種更簡潔的方式來定義函數對象,它允許我們在不創建單獨的函數對象的情況下定義一個簡單的匿名函數。在這個例子中,我們使用了一個lambda表達式來檢查一個整數是否既是偶數又大于10,并將滿足條件的整數添加到filtered_numbers2向量中。

最后,我們輸出過濾后的結果,可以看到兩種方法都得到了相同的結果:12和14。

0
伊宁县| 确山县| 华亭县| 和硕县| 易门县| 工布江达县| 卢氏县| 金华市| 自贡市| 丰镇市| 连州市| 墨竹工卡县| 青铜峡市| 喀什市| 贡觉县| 英超| 纳雍县| 绥宁县| 嘉荫县| 精河县| 高要市| 建昌县| 溆浦县| 沛县| 加查县| 高碑店市| 达孜县| 东平县| 山东| 达拉特旗| 金乡县| 历史| 罗源县| 舞阳县| 广南县| 陇南市| 斗六市| 阿荣旗| 南宫市| 安溪县| 武邑县|