中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
施秉县| 密山市| 石林| 靖宇县| 育儿| 大竹县| 酒泉市| 鲜城| 绍兴市| 夏河县| 白山市| 新丰县| 鸡泽县| 兴化市| 西峡县| 内乡县| 梧州市| 罗定市| 丹棱县| 阜城县| 左云县| 五常市| 招远市| 仙游县| 和龙市| 镇沅| 苍溪县| 蕲春县| 鄂托克旗| 淳安县| 曲水县| 名山县| 盐山县| 大足县| 洮南市| 奉化市| 元阳县| 孝义市| 云和县| 天峨县| 潼关县|